MD5 Collision with CRC32 Preimage
gist.github.com
gist.github.com
#!/bin/sh
md5sum $0 $ cat >a.py
#! /bin/python
import hashlib
s='#! /bin/python\nimport hashlib\ns=%r\nprint hashlib.sha512(s%%s).hexdigest()\n'
print hashlib.sha512(s%s).hexdigest()
$ python a.py
cf1daf466a7a95b245eab685b808fb861dab9af26078250a8041c4c08a8ff384 (edit: wrap)
7f7d1853f9d62d6b40cc53d0c5be3efd80eb09f57b71250910c0d6157b73fcd3
$ sha512sum a.py
cf1daf466a7a95b245eab685b808fb861dab9af26078250a8041c4c08a8ff384 (edit: wrap)
7f7d1853f9d62d6b40cc53d0c5be3efd80eb09f57b71250910c0d6157b73fcd3 a.pyIn this case the hash doesn’t depend on the data at all. Do you see how that helps?
#!/bin/sh
HASH=6ce1c11751e405291eac368af96de90f
# Increment until hash of this file equals $HASH: 1
echo $HASHAny proper hash function guarantees that any given bit of the output has an equal chance of being a 1 or a 0 for a random input. So for a specific pattern in 32 specific bits, there is a 1/2^32 chance in any hash func