A lightweight JavaScript library that provides utilities for SHA-256 and HMAC-SHA-256 hashing. This library is designed to work seamlessly in any JavaScript runtime, offering efficient and straightforward functions for cryptographic hashing.
Warning
This library is noticeably slower than native modules such as node:crypto and WebCrypto. Use this library only when you cannot use WebCrypto because its operations are asynchronous and node:crypto is not available.
npm i @se-oss/sha256import { hmacSha256, sha256, timeSafeCompare } from '@se-oss/sha256';
// Hashing a string
const hash = sha256('Hello, world!');
console.log(hash);
// Hashing a Uint8Array
const data = new Uint8Array([1, 2, 3, 4, 5]);
const hash2 = sha256(data);
console.log(hash2);
// HMAC with a string key and message
const key = 'my-secret-key';
const message = 'Hello, HMAC!';
const hmac = hmacSha256(key, message);
console.log(hmac);
// HMAC with a Uint8Array key and message
const keyArray = new Uint8Array([1, 2, 3, 4, 5]);
const hmac2 = hmacSha256(keyArray, 'Hello, HMAC!');
console.log(hmac2);
const result = timeSafeCompare('hello', 'hello');
console.log(result); // true
const result2 = timeSafeCompare('hello', 'world');
console.log(result2); // falseFor all configuration options, please see the API docs.
type BinaryLike = string | Uint8Array | Buffer;
function sha256(data: BinaryLike): Uint8Array;
function hmacSha256(key: BinaryLike, message: BinaryLike): Uint8Array;
function timeSafeCompare(a: string, b: string): boolean;Want to contribute? Awesome! To show your support is to star the project, or to raise issues on GitHub.
Thanks again for your support, it is much appreciated! π
MIT Β© Shahrad Elahi and contributors.