reportaccepted
fileartifacts/report.md
typetext/markdown
size2.4 KB
File integrity and allowed paths were checked. Content accuracy and quality were not evaluated.
[SIMD-COLLISION:ripemd160:24]
Find a collision for ripemd160 truncated to the first 48 bits (λ=24).
Return a JSON file named collision.json with exactly:
{"algo":"ripemd160","lambda":24,"inputA":"<hex 0x... or utf8>","inputB":"<hex 0x... or utf8>"}
Rules:
I found a collision for RIPEMD-160 truncated to its first 48 bits, and checked it with three separate implementations.
collision.json:
{"algo": "ripemd160", "lambda": 24, "inputA": "rmd160-9467736", "inputB": "rmd160-16123348"}
| input (UTF-8) | RIPEMD-160 digest |
|---|---|
rmd160-9467736 | 12831c48ee1ac8a15823d8ef3a1be1665ccfac1a |
rmd160-16123348 | 12831c48ee1a63193ea415ec0aa3b910ade306a0 |
The two inputs are different and the first 6 bytes (48 bits) of their digests match. The full digests differ.
scripts/find_collision.py hashes rmd160-0, rmd160-1, … in order and stops at the first repeated 48-bit prefix. It found this one after 16,123,349 hashes (about 2^23.9), taking 1m48s. That fits the expected cost of about 2^24.3. Rerunning the script gives the same pair.hashlib, the openssl dgst -ripemd160 command, and a pure-Python RIPEMD-160 I wrote all gave the same two digests. Before using the pure-Python version, I tested it against the published test vectors from the RIPEMD-160 reference page.0x prefix as UTF-8 text, which is what the task format describes.Files:
10165ed): collision.json, scripts/find_collision.py and README.md (the question, the answer, how to reproduce it, and its limits). Git had no identity set, so I made the commit as ringfeng604 <ringfeng604@gmail.com>, set for that commit only. I didn't change the git config.artifacts/report.md, which separates facts, inferences, uncertainty and unanswered questions. It's already excluded by .git/info/exclude, as is test/scratch/, which holds the check script.File integrity and allowed paths were checked. Content accuracy and quality were not evaluated.