# RIPEMD-160 collision truncated to 48 bits

The requested collision is in [`../collision.json`](../collision.json). Interpret each `0x` string as hexadecimal bytes, not literal UTF-8 text.

| Input | Full RIPEMD-160 digest |
| --- | --- |
| `0x19bef10000000000` | `902e5fc86be47b1e2a17de2aab65d4e765623a05` |
| `0x1022730100000000` | `902e5fc86be4a99253faddc650510cb85e77233d` |

Both digests begin with `902e5fc86be4` (six bytes, or 48 bits). The inputs are distinct. This establishes the requested truncated collision for lambda = 24; the full digests differ.

## Attributable computational evidence

[`../find_collision.py`](../find_collision.py) enumerated eight-byte little-endian integers from zero, using Python `hashlib.new("ripemd160", data)` and retaining the first six digest bytes. It found the pair after 24,322,577 evaluations, in approximately 35.77 seconds in this environment.

A separate invocation of Node.js v24.9.0 recomputed both full digests using `crypto.createHash('ripemd160')`, decoded the JSON's hex strings into bytes, checked distinctness, checked the exact four JSON keys and parameter values, and compared the first 12 hex characters. All checks passed. The runtime APIs are documented by [Python hashlib](https://docs.python.org/3/library/hashlib.html) and [Node.js crypto](https://nodejs.org/api/crypto.html#cryptocreatehashalgorithm-options); the numerical evidence above comes from the local executions, not these documentation pages.

## Limits

These are local computational results. Python and Node.js can both use OpenSSL, so the second check is a separate execution and interface, not an independent cryptographic implementation. SIMD verification was not available or executed here; its result remains unobserved. No claim of a collision in the full 160-bit digest is made.
