@quicore/hash
A lightweight utility for fast access to the most commonly used hashing algorithms including SHA, Blake2, and PBKDF2.
@quicore/hash provides a simple and unified interface to widely-used cryptographic hashing functions. It wraps Node.js' native crypto module to offer convenient helpers for generating SHA, BLAKE2, SHA3, PBKDF2, and other hashes, as well as Base62-encoded compact IDs.
✨ Features
- 🔒 Fast, secure hash generation (SHA-256, SHA-512, SHA3, BLAKE2, PBKDF2)
- 🧠 Compact Base62-encoded hashes for short unique identifiers
- 💡 Unified interface for all supported algorithms
- ⚠️ Legacy algorithm support (MD5, SHA-1, RIPEMD160) with deprecation warnings
- 🔋 Zero dependencies, fully built on Node.js native crypto
📦 Installation
npm install @quicore/hash
🚀 Usage
import { GenerateHash } from '@quicore/hash';
const sha = GenerateHash.SHA256('hello');
const id = GenerateHash.compactHash('user@example.com');
const derivedKey = GenerateHash.PBKDF2('password123', 'random-salt');
const sha3 = GenerateHash.SHA3_256('some input');
🔐 API Reference
Hash Functions
| SHA256(input) | Generates a SHA-256 hex hash |
| SHA512(input) | Generates a SHA-512 hex hash |
| SHA1(input) | ⚠️ Deprecated. SHA-1 hash |
| MD5(input) | ⚠️ Deprecated. MD5 hash |
| SHA3_256(input) | SHA3-256 hex hash |
| SHA3_512(input) | SHA3-512 hex hash |
| RIPEMD160(input) | RIPEMD160 hex hash |
| BLAKE2s256(input) | BLAKE2s-256 hex hash |
| blake2b(input, size) | Returns a Buffer from BLAKE2b hash |
| PBKDF2(password, salt) | PBKDF2 w/ SHA-512 (100,000 iterations, 64 bytes) |
Utility
| compactHash(input, len) | Returns Base62-encoded BLAKE2b digest |
| toBase62(buffer, len) | Encodes Buffer to Base62 string of given length |
📏 Defaults
- Base62 alphabet: 0-9, a-z, A-Z
- Default Base62 ID length: 22 characters
- Minimum Base62 ID length: 10 characters
- BLAKE2b default digest size: 20 bytes
- PBKDF2: 100,000 iterations, SHA-512, 64-byte output
🛑 Deprecated Algorithms
These are retained for non-security use cases (e.g., checksum comparisons) but are not recommended for cryptographic use.
📚 Use Cases
- ID and slug generation for URLs, database keys
- Password hashing with PBKDF2
- Content fingerprinting or data integrity checks
- Simple cryptographic utilities for CLI or server-side apps
🧪 Example: Mongo-Friendly ID
const id = GenerateHash.compactHash('file_upload_123');
📜 License
MIT