This tool computes the RIPEMD-160 hash of any text and displays it live as a 40-character hexadecimal string. RIPEMD-160 produces a 160-bit digest and is best known as the second hash in Bitcoin’s HASH160 operation, which is used to derive addresses from public keys.
How it works
RIPEMD-160 processes the message in 512-bit blocks after padding it with a 0x80 byte, zero bytes, and a 64-bit little-endian length. Each block is run through two parallel lines of 80 operations. Both lines start from the same five 32-bit state words but use different round functions, message-word orders, rotation amounts, and constants. After the two lines finish, their results are combined with the previous state in a rotated pattern (h1 + cl + dr, h2 + dl + er, and so on), which is what gives RIPEMD-160 its strength against attacks that work on a single line.
The boolean round functions cycle through XOR, multiplexing, and OR-NOT forms every 16 steps, and the left line adds the constants 0, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e while the right line uses a mirrored set ending in 0. The final state is serialised little-endian to give the 20-byte digest.
Example and notes
| Input | RIPEMD-160 (hex) |
|---|---|
| (empty) | 9c1185a5c5e9fc54612808977ee8f548b2258d31 |
abc | 8eb208f7e05d987a9b044a8e98c6b087f15a0bfc |
message digest | 5d0689ef49d2fae572b881b123a85ffa21595f36 |
These are the canonical reference values from the RIPEMD-160 specification. RIPEMD-160 is a cryptographic hash, so do not use it to store passwords directly — use a slow, salted hash such as bcrypt or Argon2 for that. Everything is computed locally in your browser; nothing is uploaded.