Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

js-sha256

emn1785.2mMIT0.11.0TypeScript support: included

A simple SHA-256 / SHA-224 hash function for JavaScript supports UTF-8 encoding.

sha, sha2, sha224, sha256, hash, encryption, cryptography, HMAC

readme

js-sha256

Build Status Coverage Status CDNJS
NPM
A simple SHA-256 / SHA-224 hash function for JavaScript supports UTF-8 encoding.

Demo

SHA256 Online
SHA224 Online
SHA256 File Online
SHA225 File Online

Download

Compress
Uncompress

Installation

You can also install js-sha256 by using Bower.

bower install js-sha256

For node.js, you can use this command to install:

npm install js-sha256

Usage

You could use like this:

sha256('Message to hash');
sha224('Message to hash');

var hash = sha256.create();
hash.update('Message to hash');
hash.hex();

var hash2 = sha256.update('Message to hash');
hash2.update('Message2 to hash');
hash2.array();

// HMAC
sha256.hmac('key', 'Message to hash');
sha224.hmac('key', 'Message to hash');

var hash = sha256.hmac.create('key');
hash.update('Message to hash');
hash.hex();

var hash2 = sha256.hmac.update('key', 'Message to hash');
hash2.update('Message2 to hash');
hash2.array();

Node.js

If you use node.js, you should require the module first:

var sha256 = require('js-sha256');

or

var sha256 = require('js-sha256').sha256;
var sha224 = require('js-sha256').sha224;

or

const { sha256, sha224 } = require('js-sha256');

TypeScript

If you use TypeScript, you can import like this:

import { sha256, sha224 } from 'js-sha256';

RequireJS

It supports AMD:

require(['your/path/sha256.js'], function(sha256) {
// ...
});

Example

sha256(''); // e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
sha256('The quick brown fox jumps over the lazy dog'); // d7a8fbb307d7809469ca9abcb0082e4f8d5651e46d3cdb762d02d0bf37c9e592
sha256('The quick brown fox jumps over the lazy dog.'); // ef537f25c895bfa782526529a9b63d97aa631564d5d789c2b765448c8635fb6c
sha224(''); // d14a028c2a3a2bc9476102bb288234c415a2b01f828ea62ac5b3e42f
sha224('The quick brown fox jumps over the lazy dog'); // 730e109bd7a8a32b1cb9d9a09aa2325d2430587ddbc0c38bad911525
sha224('The quick brown fox jumps over the lazy dog.'); // 619cba8e8e05826e9b8c519c0a5c68f4fb653e8a3d8aa04bb2c8cd4c

// It also supports UTF-8 encoding
sha256('中文'); // 72726d8818f693066ceb69afa364218b692e62ea92b385782363780f47529c21
sha224('中文'); // dfbab71afdf54388af4d55f8bd3de8c9b15e0eb916bf9125f4a959d4

// It also supports byte `Array`, `Uint8Array`, `ArrayBuffer` input
sha256([]); // e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
sha256(new Uint8Array([211, 212])); // 182889f925ae4e5cc37118ded6ed87f7bdc7cab5ec5e78faef2e50048999473f

// Different output
sha256(''); // e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
sha256.hex(''); // e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
sha256.array(''); // [227, 176, 196, 66, 152, 252, 28, 20, 154, 251, 244, 200, 153, 111, 185, 36, 39, 174, 65, 228, 100, 155, 147, 76, 164, 149, 153, 27, 120, 82, 184, 85]
sha256.digest(''); // [227, 176, 196, 66, 152, 252, 28, 20, 154, 251, 244, 200, 153, 111, 185, 36, 39, 174, 65, 228, 100, 155, 147, 76, 164, 149, 153, 27, 120, 82, 184, 85]
sha256.arrayBuffer(''); // ArrayBuffer

Benchmark

jsPerf Benchmark

License

The project is released under the MIT license.

Contact

The project's website is located at https://github.com/emn178/js-sha256
Author: Chen, Yi-Cyuan (emn178@gmail.com)

changelog

Change Log

v0.11.0 / 2024-01-24

Fixed

  • Generates incorrect hash in some cases #43
  • dependencies and security issues. #41

v0.10.1 / 2023-08-31

Added

  • Disable webpack polyfill.

v0.10.0 / 2023-08-30

Fixed

  • Chrome bug by workaround. #40
  • deprecated new Buffer, replace with Buffer.from. #34
  • dependencies and security issues. #32, #36

Changed

  • TypeScript interface, secretKey can be bytes like message. #23, #25
  • remove eval and use require directly. #18, #26

v0.9.0 / 2017-12-18

Fixed

  • incorrect result when first bit is 1 of bytes.

Changed

  • throw error by Error oject. #13

Added

  • TypeScript interfaces. #12

v0.8.0 / 2017-11-19

Added

  • support for web worker.
  • typescript types. #10

Changed

  • prevent webpack to require dependencies.

v0.7.1 / 2017-10-31

Improved

  • performance of hBytes increment.

v0.7.0 / 2017-10-31

Fixed

  • incorrect result when file size >= 512M.

v0.6.0 / 2017-07-11

Added

  • HMAC feature.

Changed

  • throw error if input type is incorrect.

v0.5.0 / 2017-01-24

Added

  • Streaming support #6

v0.4.0 / 2017-01-23

Added

  • AMD support.

Fixed

  • ArrayBuffer dosen't work in Webpack.

v0.3.2 / 2016-09-12

Added

  • CommonJS detection.

v0.3.1 / 2016-09-08

Added

  • some files to npm package.

Fixed

  • coding style.

v0.3.0 / 2015-05-23

Added

  • support for ArrayBuffer input.

v0.2.3 / 2015-02-11

Added

  • support for byte array input.

v0.2.2 / 2015-02-10

Improved

  • performance.

v0.2.1 / 2015-02-05

Fixed

  • special length bug.

Added

  • test cases.

v0.2.0 / 2015-02-03

Removed

  • ascii parameter.

Improved

  • performance.

Added

  • test cases.

v0.1.4 / 2015-01-24

Improved

  • performance.

v0.1.3 / 2015-01-09

Improved

  • performance.

v0.1.2 / 2015-01-06

Added

  • bower package.
  • travis.
  • coveralls.

Fixed

  • JSHint warnings.

v0.1.1 / 2014-07-27

Fixed

  • accents bug.

v0.1.0 / 2014-01-05

Added

  • initial release.