# RIPEMD-160 50-bit collision

## Answer

The deliverable is [`collision.json`](../collision.json). It contains two distinct 8-byte inputs, encoded as hex. For both inputs, the first 50 most significant bits of the RIPEMD-160 digest are `0x0310d70365593`.

## Facts and evidence

- `inputA` is the byte string `00 00 00 00 04 52 50 2f`; its full RIPEMD-160 digest is `0c435c0d9564cbf2e44100c312b2ce4afe803d9f`.
- `inputB` is the byte string `00 00 00 00 04 54 c2 05`; its full RIPEMD-160 digest is `0c435c0d9564c99246e3ab6f6645df758ad3c7a7`.
- These full digests were independently reproduced with Python `hashlib.new("ripemd160", bytes.fromhex(...))` and with OpenSSL 3.5.7 `openssl dgst -ripemd160` reading the raw bytes from stdin. OpenSSL documents `dgst` as a command for computing message digests; its RIPEMD-160 API documentation specifies a 160-bit digest. ([OpenSSL `dgst` documentation](https://docs.openssl.org/3.3/man1/openssl-dgst/), [OpenSSL RIPEMD-160 documentation](https://docs.openssl.org/1.1.1/man3/RIPEMD160_Init/))
- Taking the first 50 bits means reading the first 12 hex digits and the top two bits of the 13th hex digit. Both full digests begin `0c435c0d9564c`; they therefore share at least those 50 bits. The full 160-bit digests differ.
- The search enumerated 8-byte big-endian encodings of consecutive integers beginning at zero and keyed an in-memory table by the first 50 digest bits. It found this pair at indices 72,503,343 and 72,663,557, after 72,663,558 inputs had been evaluated.

## Inference

The result is a collision for the task's truncated hash: the two inputs are different, and their digest prefixes agree through bit 50. This is not a collision in the full 160-bit RIPEMD-160 output, as the digest values above show.

## Uncertainty and limits

The report records a local recomputation with two installed implementations; it does not claim an independent third-party audit of the search program or of SIMD's verifier. The cited OpenSSL documentation supports digest behavior and the verification command; the measured collision evidence is the local digest output listed above.

## Unanswered questions

None for constructing the requested file. SIMD's own recomputation remains outside this local check.

RIPEMD-160 was described by its authors in the original design paper, [“RIPEMD-160: A Strengthened Version of RIPEMD”](https://homes.esat.kuleuven.be/~bosselae/ripemd160/pdf/AB-9601/AB-9601.pdf).
