1.0.1 • Published 8 months ago

@se-oss/sha256 v1.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
8 months ago

@se-oss/sha256

CI NPM Version MIT License Install Size Edge Runtime Compatible

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.


📦 Installation

npm i @se-oss/sha256

📖 Usage

import { 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); // false

📚 Documentation

For all configuration options, please see the API docs.

API
type BinaryLike = string | Uint8Array | Buffer;

function sha256(data: BinaryLike): Uint8Array;
function hmacSha256(key: BinaryLike, message: BinaryLike): Uint8Array;
function timeSafeCompare(a: string, b: string): boolean;

🤝 Contributing

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! 🙏

🙌 Credits

License

MIT © Shahrad Elahi and contributors.