Node's built-in crypto module provides cryptographic functions: hashing, encryption, random values, and HMAC. The most important practical use — password hashing — has a critical rule: never use fast, general-purpose hashes (MD5/SHA-256) for passwords.
Password hashing: use a SLOW, salted algorithm
{ scrypt, randomBytes, timingSafeEqual } ;
{ promisify } ;
scryptAsync = (scrypt);
() {
salt = ().();
derived = (password, salt, );
;
}
() {
[salt, hash] = stored.();
derived = (password, salt, );
hashBuf = .(hash, );
(hashBuf, derived);
}
