jsSHA

A JavaScript implementation of the complete Secure Hash Standard family (SHA-1, SHA-224, SHA3-224, SHA-256, SHA3-256, SHA-384, SHA3-384, SHA-512, SHA3-512, SHAKE128, and SHAKE256) as well as HMAC

Github星跟踪图

jsSHA

A pure JavaScript streaming implementation of the complete Secure Hash Standard
family (SHA-1, SHA-224, SHA3-224, SHA-256, SHA3-256, SHA-384, SHA3-384, SHA-512,
SHA3-512, SHAKE128, and SHAKE256) as well as HMAC.

Build Status

Usage

Installation

Browser

Include the desired JavaScript file (sha.js, sha1.js, sha256.js, sha512.js, or
sha3.js) in your header (sha.js used below):

<script type="text/javascript" src="/path/to/sha.js"></script>

Node.js

jsSHA is available through NPM and be installed by simply doing

npm install jssha

To use the module, first require it using:

jsSHA = require("jssha");

Hashing

Instantiate a new jsSHA object with the desired hash type, input type, and
options as parameters. The hash type can be one of SHA-1, SHA-224, SHA3-224,
SHA-256, SHA3-256, SHA-384, SHA3-384, SHA-512, SHA3-512, SHAKE128, or SHAKE256.
The input type can be one of HEX, TEXT, B64, BYTES, or ARRAYBUFFER. You can
then stream in input using the update object function, calling it multiple
times if needed. Finally, simply call getHash with the output type as a
parameter (B64, HEX, BYTES, or ARRAYBUFFER). Example to calculate the SHA-512
of "This is a test":

var shaObj = new jsSHA("SHA-512", "TEXT");
shaObj.update("This is a ");
shaObj.update("test");
var hash = shaObj.getHash("HEX");

The constructor takes a hashmap as a optional third argument with possible
properties of numRounds and encoding. numRounds controls the number of
hashing iterations/rounds performed and defaults to a value of 1 if not
specified. encoding specifies the encoding used to encode TEXT-type inputs.
Valid options are "UTF8", "UTF16BE", and "UTF16LE", it defaults to "UTF8".

getHash also takes a hashmap as an optional second argument. By default the
hashmap is {"outputUpper" : false, "b64Pad" : "="}. These options are
intelligently interpreted based upon the chosen output format. Important:
SHAKE128 and SHAKE256 require shakeLen to be included in the hashmap where
shakeLen is the desired output length of the SHAKE algorithm in a multiple
of 8 bits.

HMAC

Instantiate a new jsSHA object the same way as for hashing. Then set the HMAC
key to be used by calling setHMACKey with the key and its input type (this
MUST be done before calling update). You can stream in the input using the
update object function just like hashing. Finally, get the HMAC by calling
the getHMAC function with the output type as its argument. Example to
calculate the SHA-512 HMAC of the string "This is a test" with the key "abc":

var shaObj = new jsSHA("SHA-512", "TEXT");
shaObj.setHMACKey("abc", "TEXT");
shaObj.update("This is a ");
shaObj.update("test");
var hmac = shaObj.getHMAC("HEX");

setHMACKey takes the same input types as the constructor and getHMAC takes the
same inputs as getHash as described above.

Note: You cannot calculate both the hash and HMAC using the same object.

Files

src/sha_dev.js

A commented implementation of the entire SHA family of hashes. Not to be used
in production.

src/sha.js

A Google Closure Compiler optimized version of the entire library.

src/sha1.js

A Google Closure Compiler optimized version the library with non SHA-1
functionality removed.

src/sha256.js

A Google Closure Compiler optimized version the library with non SHA-224/SHA-256
functionality removed.

src/sha3.js

A Google Closure Compiler optimized version the library with non SHA-3
functionality removed.

src/sha512.js

A Google Closure Compiler optimized version the library with non SHA-384/SHA-512
functionality removed.

Compiling

This library makes use of the Google Closure Compiler
to both boost performance and reduce filesizes. To compile sha_dev.js into a customized output file,
use a command like the following:

java -jar compiler.jar --define="SUPPORTED_ALGS=<FLAG>" \
    --externs /path/to/build/externs.js --warning_level VERBOSE \
    --compilation_level ADVANCED_OPTIMIZATIONS \
    --js /path/to/sha_dev.js --js_output_file /path/to/sha.js

where FLAG is a bitwise OR of the following values:

  • 8 for SHA3
  • 4 for SHA-384/SHA-512
  • 2 for SHA-224/256
  • 1 for SHA-1

Contact Info

The project's website is located at https://caligatio.github.com/jsSHA/

Donations

Feel like donating? We're now accepting donations through Bitcoin!

主要指标

概览
名称与所有者Caligatio/jsSHA
主编程语言TypeScript
编程语言JavaScript (语言数: 3)
平台
许可证BSD 3-Clause "New" or "Revised" License
所有者活动
创建于2012-07-21 15:43:35
推送于2024-03-11 05:47:11
最后一次提交2024-03-11 06:47:11
发布数31
最新版本名称v3.3.1 (发布于 2023-08-04 19:12:28)
第一版名称release-0.1 (发布于 2008-02-22 01:37:22)
用户参与
星数2.2k
关注者数70
派生数390
提交数400
已启用问题?
问题数84
打开的问题数2
拉请求数19
打开的拉请求数0
关闭的拉请求数3
项目设置
已启用Wiki?
已存档?
是复刻?
已锁定?
是镜像?
是私有?