Note that hashquines, i.e., programs that print their own hash when executed do not depend on the hash function being broken. In fact, they are a fun little exercise.
#!/bin/sh
md5sum $0In 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 $HASH $ 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.py