node package manager
Share your code. npm Orgs help your team discover, share, and reuse code. Create a free org »



DO NOT USE, unless you're hashing SHA-256 for the game Starbound.

This package is only intended for hashing SHA-256 the way Starbound does it. Starbound's hashing algorithm has an error where strings of length 55 will use the wrong number of padding 0's when applying the padding at the end of the message.



npm install --save starbound-sha256


<script src="/path/to/sha256.js"></script>


There are two methods, one for computing the hash of the input, and one for double-hashing it:

sha256('hello');   // "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824" 
sha256.x2('hello'); // "d7914fe546b684688bb95f4f888a92dfc680603a75f23eb823658031fff766d9" 

Input is either an array of bytes or a string. String are always interpreted as binary data; if you have a hex-encoded string of data to parse, first convert it to a binary string or array of bytes.

Output by default is a hexadecimal-encoded string. Other options are an array of bytes, or a binary-encoded string:

sha256('hello');   // "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824" <= Hex-encoded; default 
sha256('hello', { asBytes: true }); // [44,242,77,186,95,176,163,14,38,232,59,42,197,185,226,158,27,22,30,92,31,167,66,94,115,4,51,98,147,139,152,36] <= Array of bytes 
sha256('hello', { asString: true }); // ",òMº_°£&è;*Źâž\§B^s3b“‹˜$" <= Binary-encoded string 


Unit tests are written in Mocha. To run the test suite, checkout the git repository, and from within the base folder run:

$ npm install --dev
$ npm test


Most of the code from CryptoJS


(MIT License)

Original work Copyright 2013, JP Richardson
Modified work Copyright 2014, Blixt