Introduction
RIPEMD-128 is a 128-bit cryptographic hash function developed in 1996 by Hans Dobbertin, Antoon Bosselaers, and Bart Preneel at KU Leuven. It was designed as a plug-in substitute for the original RIPEMD function, offering the same 128-bit output size but with a strengthened internal structure. The algorithm uses two parallel chains of 64 rounds each. This tool generates RIPEMD-128 hashes entirely in your browser using a pure TypeScript implementation based on the original reference C code.
What this tool does
- Generates RIPEMD-128 hashes from any text input in real time as you type.
- Produces a fixed 128-bit (32-character hex) digest.
- Implements the full RIPEMD-128 algorithm with two parallel 4-round chains.
- Displays the hash as a lowercase hexadecimal string.
- Processes all data locally in your browser with no network requests.
How this tool works
Type or paste text into the input field. The tool converts the text to UTF-8 bytes, pads the message to a multiple of 64 bytes with the standard MD-strengthening scheme, and processes each 512-bit block through the RIPEMD-128 compression function. The compression function runs two parallel chains (left and right) with different Boolean functions, message word orders, rotation amounts, and constants. The hash updates instantly as you type. All computation happens client-side.
How RIPEMD-128 works
RIPEMD-128 was developed as part of the EU RIPE project (RACE Integrity Primitives Evaluation, 1992–1996). The original RIPEMD had a 128-bit output but used a single chain similar to MD4, making it vulnerable to the same attack techniques. Dobbertin, Bosselaers, and Preneel redesigned it with two parallel chains that use different Boolean functions at each round. The left chain uses F, G, H, I (XOR, multiplex, f-of-x-and-not-y, multiplex-reversed). The right chain applies them in reverse order: I, H, G, F. Each chain processes 64 rounds (4 rounds of 16 steps). The constants for the left chain are 0, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc. The right chain uses 0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0. After processing a block, the two chains are combined with the previous state in a specific order that mixes all four words. RIPEMD-128 is the shorter sibling of RIPEMD-160, which adds a fifth chaining variable and a fifth round. While RIPEMD-160 is used in Bitcoin and PGP, RIPEMD-128 sees less use because its 128-bit output provides only 64 bits of collision resistance — below modern recommendations. The algorithm remains unbroken, but NIST recommends a minimum of 112 bits of security for new applications.
How to use this tool
- Enter the text you want to hash in the input field.
- The RIPEMD-128 hash appears instantly in the output field as a 32-character hex string.
- Use the Copy button to copy the hash to your clipboard.
- Change the input at any time and the hash updates automatically.
Real-world examples
Hashing the empty string
Input: empty string. Output: `cdf26213a150dc3ecb610f18f6b38b46`. This is the standard test vector from the RIPEMD-128 specification.
Hashing a single character
Input: `a`. Output: `86be7afa339d0fc7cfc785e72f578d33`. The hash changes completely with even a one-character input.
Hashing a common test string
Input: `abc`. Output: `c14a12199c66e4ba84636b0f69144c77`. This matches the output of the reference C implementation by Bosselaers.
Comparison with similar methods
| Method | Complexity | Typical use |
|---|---|---|
| RIPEMD-128 | O(n) — 64 rounds per 64-byte block | Legacy 128-bit hashing |
| RIPEMD-160 | O(n) — 80 rounds per 64-byte block | Bitcoin addresses, PGP, OpenPGP |
| MD5 | O(n) — 64 rounds per 64-byte block | Legacy checksums (broken) |
| SHA-256 | O(n) — 64 rounds per 64-byte block | Modern security, TLS, blockchain |
Limitations or considerations
RIPEMD-128 produces a 128-bit digest, providing only 64 bits of collision resistance. This is below the 112-bit minimum recommended by NIST SP 800-131A for new applications. While no practical attacks exist on RIPEMD-128 itself, its shorter sibling RIPEMD-160 is preferred when the RIPEMD family is required. For new security-critical applications, use SHA-256 or BLAKE2b. This tool does not support keyed hashing.
Frequently asked questions
Is RIPEMD-128 still secure?
RIPEMD-128 has no known practical attacks. However, its 128-bit output provides only 64 bits of collision resistance, which is below modern NIST recommendations. Use RIPEMD-160 or SHA-256 for applications requiring stronger guarantees.
What is the difference between RIPEMD-128 and RIPEMD-160?
RIPEMD-128 uses four 32-bit chaining variables and four rounds per chain. RIPEMD-160 uses five chaining variables and five rounds per chain, producing a 160-bit output. RIPEMD-160 is more widely used (Bitcoin, PGP) and offers better collision resistance.
Why was RIPEMD-128 created?
It was designed as a drop-in replacement for the original RIPEMD, which had a 128-bit output but a weaker single-chain structure. RIPEMD-128 maintains the same output size while using the strengthened dual-chain design.
Can I use RIPEMD-128 for password hashing?
No. RIPEMD-128 is a plain hash function without salting or work factors. Use Argon2, bcrypt, or PBKDF2 for password storage.
Conclusion
The RIPEMD-128 hash generator provides an accurate implementation of this 1996 hash function based on the original reference code. It is useful for verifying legacy 128-bit digests, studying dual-chain hash design, and comparing outputs against test vectors. For new applications requiring 128-bit or stronger hashing, BLAKE2b or SHA-256 are recommended.