Es ist nicht unmöglich, nur schwierig.
Das prinzip bei Bitcoin ist ziemlich ähnlich, nur dass die Prüfsumme dabei nicht im Block, welcher gehasht wird, vorhanden ist. Außerdem wird bei bitcoin nach einem Hash gesucht, welcher mit einer bestimmten Anzahl von 0 Bits beginnt. Es macht aber keinen Unterschied, ob man nach einer Kette von 0 Bits, oder einer Kette von bestimmten Bits sucht.
Auf das Problem hier bezogen, auch wenn der Hash-Algorithmus nicht MD5, sondern SHA256 ist, könnte man es folgendermaßen vergleichen:
- Anzahl von zu suchenden Bits des MD5-Hashes: 128 (Es muss ja der komplette Hash gefunden werden, welcher vorher festgelegt und in die exe-Datei geschrieben wurde)
- Aktuelle Hashrate von Bitcoin: 25.295.477.650 GH/s
- Aktuelle Difficulty von Bitcoin: 3290605988754 (Umgerechnet muss also der Hash des Blockes mit ca. 73 Null-Bits beginnen)
- Durchschnittszeit zwischen gefundenen Bitcoin-Blöcken: 10 Minuten
Jetzt die Annahme man habe ein Gerät, welches mit gleicher Geschwindigkeit alle Möglichkeiten durchsucht:
Die Zeit wird proportional mit dem Suchraum größer, und da sich dieser mit jedem weiteren Bit verdoppelt wird die benötigte Zeit um den Faktor 2^(128-73) größer. Also 3,6*10^17 Minuten. (685 milliarden Jahre)
Also selbst mit der gigantischen Rechenleistung von Bitcoin ist das recht aussichtslos. Auch wenn man noch berücksichtigt, dass bei Bitcoin zwei mal mit SHA256 gehasht wird, und dass MD5 viel schneller zu Hashen wäre, wird man nicht wahrscheinlich nicht zu einer nutzbaren Rechendauer kommen.
Eine Sache wäre da aber noch: MD5 gilt nicht mehr als sicher, eventuell kann man gezielt Kollisionen oder andere Lücken ausnutzen, um schneller zu einem Ergebnis zu kommen.
Ich hoffe ich habe mich nirgends vertan.