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-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 |
| 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 |
| MD5md5 | Legacy | 128-bit | HMAC yes | no options | BROKEN: collision attacks known since 2004 |
| SHA-1sha1 | Legacy | 160-bit | HMAC yes | no options | BROKEN: practical collision attack (SHAttered) |
| CRC-32crc32 | Non-cryptographic | 32-bit | HMAC no | no options | NOT for security: error-detection checksum only |
| CRC-16/XMODEMcrc16-xmodem | Non-cryptographic | 16-bit | HMAC no | no options | NOT for security |
| xxHash (XXH64)xxhash | Non-cryptographic | 64-bit | HMAC no | 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 |
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. 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 or PBKDF2 with the exact salt and cost it was made with. Salted KDFs explains why the salt comes back.