Algorithms

Algorithms

Every algorithm the package ships with its digest size and HMAC support and options. Read live from the registry
algorithms()46 algorithms · listing order
OptionsSecurity
SHA-256sha256Cryptographic256-bitHMAC yesno options128-bit collision resistance
SHA-384sha384Cryptographic384-bitHMAC yesno options192-bit collision resistance
SHA-512sha512Cryptographic512-bitHMAC yesno options256-bit collision resistance
SHA-224sha224Cryptographic224-bitHMAC yesno options112-bit collision resistance
SHA-512/224sha512-224Cryptographic224-bitHMAC yesno options112-bit collision resistance
SHA-512/256sha512-256Cryptographic256-bitHMAC yesno options128-bit collision resistance
SHA-512Halfsha512-halfCryptographic256-bitHMAC nono options128-bit collision resistance
SHA3-256sha3-256Cryptographic256-bitHMAC yesno options128-bit collision resistance
SHA3-512sha3-512Cryptographic512-bitHMAC yesno options256-bit collision resistance
Keccak-256keccak256Cryptographic256-bitHMAC yesno options128-bit collision resistance
BLAKE2bblake2bCryptographic512-bitHMAC yesno options256-bit collision resistance
BLAKE2b-256blake2b-256Cryptographic256-bitHMAC nono options128-bit collision resistance
BLAKE2b-224blake2b-224Cryptographic224-bitHMAC nono options112-bit collision resistance
BLAKE2sblake2sCryptographic256-bitHMAC yesno options128-bit collision resistance
BLAKE3blake3Cryptographic256-bitHMAC nono options128-bit security against collisions and preimages
BLAKE-256blake256Cryptographic256-bitHMAC nono options128-bit collision resistance
RIPEMD-160ripemd160Cryptographic160-bitHMAC yesno options80-bit collision resistance
RIPEMD-320ripemd320Cryptographic320-bitHMAC yesno optionsNo stronger than RIPEMD-160: the wider digest adds no collision resistance
HASH160hash160Cryptographic160-bitHMAC nono options80-bit collision resistance
HASH256 (double SHA-256)hash256Cryptographic256-bitHMAC nono options128-bit collision resistance
WhirlpoolwhirlpoolCryptographic512-bitHMAC yesno optionsNo attack on the full hash
MD5md5Legacy128-bitHMAC yesno optionsBROKEN: collision attacks known since 2004
MD4md4Legacy128-bitHMAC yesno optionsBROKEN: practical collisions since 1996
MD2md2Legacy128-bitHMAC yesno optionsBROKEN: preimages in 2^73 and collisions in 2^63.3 (RFC 6149)
NTLMntlmLegacy128-bitHMAC nono optionsBROKEN as a password hash: no salt and no cost
SHA-1sha1Legacy160-bitHMAC yesno optionsBROKEN: practical collision attack (SHAttered)
SHA-0sha0Legacy160-bitHMAC yesno optionsBROKEN: full collision found in 2004
RIPEMD-128ripemd128Legacy128-bitHMAC yesno options64-bit collision resistance
RIPEMD-256ripemd256Legacy256-bitHMAC yesno optionsNo stronger than RIPEMD-128: the wider digest adds no collision resistance
HAVALhavalLegacy128-bitHMAC yespasses?, bits?BROKEN: practical collisions with 3 passes (2^29
TigertigerLegacy192-bitHMAC yesno optionsNo practical attack on all 24 rounds
CRC-32crc32Non-cryptographic32-bitHMAC novariant?NOT for security: error-detection checksum only
CRC-64crc64Non-cryptographic64-bitHMAC novariant?NOT for security: error-detection checksum only
CRC-24crc24Non-cryptographic24-bitHMAC novariant?NOT for security: error-detection checksum only
CRC-16/XMODEMcrc16-xmodemNon-cryptographic16-bitHMAC nono optionsNOT for security
Adler-32adler32Non-cryptographic32-bitHMAC nono optionsNOT for security: weaker than CRC-32 on short inputs
xxHashxxhashNon-cryptographic64-bitHMAC nobits?, seed?NOT for security: fast hash for hash tables
FNV-1a (64-bit)fnv1aNon-cryptographic64-bitHMAC nono optionsNOT for security: simple hash for hash tables
scryptscryptPasswordvariableHMAC nosalt?, N?, r?, p?, keyLength?Memory-hard KDF
PBKDF2pbkdf2PasswordvariableHMAC nosalt?, iterations?, digest?, keyLength?OWASP Password Storage Cheat Sheet: >=600000 iterations with HMAC-SHA256
HKDFhkdfCryptographicvariableHMAC nosalt?, info?, digest?, keyLength?Not for passwords: HKDF adds no cost
EVP_BytesToKeyevp-bytestokeyPasswordvariableHMAC nosalt?, digest?, iterations?, keyLength?, ivLength?Weak: one fast hash per block
Argon2idargon2idPasswordvariableHMAC nosalt?, memory?, iterations?, parallelism?, keyLength?, secret?, associatedData?The primary variant of RFC 9106
Argon2iargon2iPasswordvariableHMAC nosalt?, memory?, iterations?, parallelism?, keyLength?, secret?, associatedData?Its reads leak nothing to a side channel
Argon2dargon2dPasswordvariableHMAC nosalt?, memory?, iterations?, parallelism?, keyLength?, secret?, associatedData?Its reads follow the data and can leak through a side channel
bcryptbcryptPassword184-bitHMAC nosalt?, cost?A password past 72 bytes is refused
read from the registry in your browser / no networka name with ? is optional

Every row is create(name).info(), computed in your browser from the same registry the CLI and the agent tools read. Sort by digest to see what's 20 bytes and what's 64. The security note behind each row is the library's own, cut to its first clause. Hover it for the rest.

Picking one

For a new design, SHA-256 or BLAKE3 and move on. BLAKE3 when speed matters and you control both ends, SHA-256 when anything else has to agree with you.

For compatibility, the page of the thing you're matching wins. Ethereum wants Keccak-256, not SHA3-256, and the two differ in one padding byte. A Bitcoin address wants HASH160 of the key's bytes, not of its hex. The XRP Ledger wants SHA-512Half, which isn't SHA-512/256. Algorand wants the other one. Getting any of those almost right gives you a digest that looks exactly like the correct one.

For checksums somebody else published, whatever they published, MD5 included. For your own tables and dedup, xxHash or FNV-1a. Never for anything an attacker gets to choose.

For a password digest you need to reproduce, scrypt, PBKDF2 or Argon2id with the exact salt and cost it was made with. Salted KDFs explains why the salt comes back. Keys from a secret that's already strong, a shared secret or a master key, come from HKDF instead. Got a U2FsdGVkX1 blob from openssl enc or CryptoJS? Its key and IV come from EVP_BytesToKey.