Algorithms
| Options | Security | ||||
|---|---|---|---|---|---|
| SHA-256sha256 | Cryptographic | 256-bit | HMAC yes | no options | 128-bit collision resistance |
| SHA-384sha384 | Cryptographic | 384-bit | HMAC yes | no options | 192-bit collision resistance |
| SHA-512sha512 | Cryptographic | 512-bit | HMAC yes | no options | 256-bit collision resistance |
| SHA-224sha224 | Cryptographic | 224-bit | HMAC yes | no options | 112-bit collision resistance |
| SHA-512/224sha512-224 | Cryptographic | 224-bit | HMAC yes | no options | 112-bit collision resistance |
| SHA-512/256sha512-256 | Cryptographic | 256-bit | HMAC yes | no options | 128-bit collision resistance |
| SHA-512Halfsha512-half | Cryptographic | 256-bit | HMAC no | no options | 128-bit collision resistance |
| SHA3-256sha3-256 | Cryptographic | 256-bit | HMAC yes | no options | 128-bit collision resistance |
| SHA3-512sha3-512 | Cryptographic | 512-bit | HMAC yes | no options | 256-bit collision resistance |
| Keccak-256keccak256 | Cryptographic | 256-bit | HMAC yes | no options | 128-bit collision resistance |
| BLAKE2bblake2b | Cryptographic | 512-bit | HMAC yes | no options | 256-bit collision resistance |
| BLAKE2b-256blake2b-256 | Cryptographic | 256-bit | HMAC no | no options | 128-bit collision resistance |
| BLAKE2b-224blake2b-224 | Cryptographic | 224-bit | HMAC no | no options | 112-bit collision resistance |
| BLAKE2sblake2s | Cryptographic | 256-bit | HMAC yes | no options | 128-bit collision resistance |
| BLAKE3blake3 | Cryptographic | 256-bit | HMAC no | no options | 128-bit security against collisions and preimages |
| BLAKE-256blake256 | Cryptographic | 256-bit | HMAC no | no options | 128-bit collision resistance |
| RIPEMD-160ripemd160 | Cryptographic | 160-bit | HMAC yes | no options | 80-bit collision resistance |
| RIPEMD-320ripemd320 | Cryptographic | 320-bit | HMAC yes | no options | No stronger than RIPEMD-160: the wider digest adds no collision resistance |
| HASH160hash160 | Cryptographic | 160-bit | HMAC no | no options | 80-bit collision resistance |
| HASH256 (double SHA-256)hash256 | Cryptographic | 256-bit | HMAC no | no options | 128-bit collision resistance |
| Whirlpoolwhirlpool | Cryptographic | 512-bit | HMAC yes | no options | No attack on the full hash |
| MD5md5 | Legacy | 128-bit | HMAC yes | no options | BROKEN: collision attacks known since 2004 |
| MD4md4 | Legacy | 128-bit | HMAC yes | no options | BROKEN: practical collisions since 1996 |
| MD2md2 | Legacy | 128-bit | HMAC yes | no options | BROKEN: preimages in 2^73 and collisions in 2^63.3 (RFC 6149) |
| NTLMntlm | Legacy | 128-bit | HMAC no | no options | BROKEN as a password hash: no salt and no cost |
| SHA-1sha1 | Legacy | 160-bit | HMAC yes | no options | BROKEN: practical collision attack (SHAttered) |
| SHA-0sha0 | Legacy | 160-bit | HMAC yes | no options | BROKEN: full collision found in 2004 |
| RIPEMD-128ripemd128 | Legacy | 128-bit | HMAC yes | no options | 64-bit collision resistance |
| RIPEMD-256ripemd256 | Legacy | 256-bit | HMAC yes | no options | No stronger than RIPEMD-128: the wider digest adds no collision resistance |
| HAVALhaval | Legacy | 128-bit | HMAC yes | passes?, bits? | BROKEN: practical collisions with 3 passes (2^29 |
| Tigertiger | Legacy | 192-bit | HMAC yes | no options | No practical attack on all 24 rounds |
| CRC-32crc32 | Non-cryptographic | 32-bit | HMAC no | variant? | NOT for security: error-detection checksum only |
| CRC-64crc64 | Non-cryptographic | 64-bit | HMAC no | variant? | NOT for security: error-detection checksum only |
| CRC-24crc24 | Non-cryptographic | 24-bit | HMAC no | variant? | NOT for security: error-detection checksum only |
| CRC-16/XMODEMcrc16-xmodem | Non-cryptographic | 16-bit | HMAC no | no options | NOT for security |
| Adler-32adler32 | Non-cryptographic | 32-bit | HMAC no | no options | NOT for security: weaker than CRC-32 on short inputs |
| xxHashxxhash | Non-cryptographic | 64-bit | HMAC no | bits?, seed? | NOT for security: fast hash for hash tables |
| FNV-1a (64-bit)fnv1a | Non-cryptographic | 64-bit | HMAC no | no options | NOT for security: simple hash for hash tables |
| scryptscrypt | Password | variable | HMAC no | salt?, N?, r?, p?, keyLength? | Memory-hard KDF |
| PBKDF2pbkdf2 | Password | variable | HMAC no | salt?, iterations?, digest?, keyLength? | OWASP Password Storage Cheat Sheet: >=600000 iterations with HMAC-SHA256 |
| HKDFhkdf | Cryptographic | variable | HMAC no | salt?, info?, digest?, keyLength? | Not for passwords: HKDF adds no cost |
| EVP_BytesToKeyevp-bytestokey | Password | variable | HMAC no | salt?, digest?, iterations?, keyLength?, ivLength? | Weak: one fast hash per block |
| Argon2idargon2id | Password | variable | HMAC no | salt?, memory?, iterations?, parallelism?, keyLength?, secret?, associatedData? | The primary variant of RFC 9106 |
| Argon2iargon2i | Password | variable | HMAC no | salt?, memory?, iterations?, parallelism?, keyLength?, secret?, associatedData? | Its reads leak nothing to a side channel |
| Argon2dargon2d | Password | variable | HMAC no | salt?, memory?, iterations?, parallelism?, keyLength?, secret?, associatedData? | Its reads follow the data and can leak through a side channel |
| bcryptbcrypt | Password | 184-bit | HMAC no | salt?, cost? | A password past 72 bytes is refused |
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.