2010-05-27 12 views
5

Heute las ich über MD5-Hash und fragte mich, ob das möglich ist. scheint wie ein rekursives Problem ... oder gibt es eine Lösung?Speichern eines MD5-Hash einer Textdatei in derselben Textdatei?

+0

Ist das möglich ... md5 (mist + x) == x ? wie ein Dokument mit eigenen MD5-Informationen auf der letzten Seite? – bakra

+0

Ja, wie ich geschrieben habe, ist es in der Theorie möglich - aber um das zu tun, bedarf es einer Menge Versuche und Glück ... man kann ein solches Dokument nicht mit einem einzigen Schuss konstruieren *. – tanascius

Antwort

2

Sie müssen die Hash-Summe von der Berechnung ausschließen. Dann können Sie es verwenden, aber Sie können den Hash-Rumm nicht bis zum Ende der Datei hinzufügen, wenn Sie erwarten, dass er korrekt ist, oder wenn Sie den Lauf über neue YU berechnen, wird er immer mit einem neuen MD5-Hash enden. Enjoying in eine unendliche Geschichte :)

3

Nun, sobald Sie die MD5-Summe ausfüllen die Datei wird ändern und erhalten Sie eine neue MD5 - so: nein, es ist nicht machbar. In der Theorie könnte nur Versuch und Irrtum zu einem Dokument führen, das seinen eigenen Hash enthält ... aber das Dokument wäre wahrscheinlich ziemlich verstümmelt und enthält nichts Bedeutungsvolles.

Es ist jedoch möglich, 128 Bit während der Berechnung mit Nullen (z. B.) zu füllen. Dieser Platz wird die MD5-Summe enthalten und muss wieder Null sein, wenn der Hash später überprüft wird.

+0

Nachtrag: Es ist nicht machbar **, dass wir von ** wissen. Es ist durchaus möglich, dass ein zukünftiges mathematisches Supergenius eine Möglichkeit entwickelt, eine solche Datei schnell zu konstruieren. –

+0

@BlueRaja: Siehe [hier] (http://www.mscs.dal.ca/~selinger/md5collision/). – sbi

+0

@sbi: das hat nichts mit dieser duscussion zu tun ... –

4

Es ist nicht möglich.

Sie können die Datei jedoch nach dem Hash ihres Inhalts umbenennen, der die Informationen anfügt, ohne den Hash zu ändern.

1

Nun, das Hinzufügen eines MD5-Hash zu einem Text ändert den Text und damit den MD5-Hash. Das Berechnen eines MD5-Hashwerts Ihres MD5-Hashwerts mit dem Text, der den zu bearbeitenden MDI enthält, ist nicht möglich.

4

Betrachten Sie jeden Hash und stellen Sie sich vor, dass Sie ihm zufälligen Text hinzufügen. Da es eine unendliche Menge möglicher Texte ist Sie hinzufügen könnte, aber nur eine endliche Menge von möglichen Hash-Werte, muss es möglich sein, die Texte der Hash ergeben. Das Problem ist nur, dass Sie nicht genügend Ressourcen haben, um es zu finden.

Was Sie könnten in der Lage sein, zu versuchen, ob es irgendwelche MD5-Hash-Werte, die, wenn gehasht, yield themselves as a result (dank Francesco für den Link!):
Für alle möglichen Permutationen von MD5-Hash, erstellen Sie den Hash und vergleiche das Ergebnis mit dem Original.

+1

Das heißt, gibt der MD5-Hash einen festen Punkt? Siehe http://stackoverflow.com/questions/235785/is-there-an-md5-fixed-point-where-md5x-x – Francesco

+0

@Francesco: Danke für den Link, ich habe es der Antwort hinzugefügt. – sbi

+0

Ich dachte mehr in diesen Begriffen: md5 (Mist + x) == x? Ich meine eine .doc mit anderen Sachen + die MD5-Hash-Informationen am Ende. – bakra

2

Theoretisch ist es möglich: mögliche Dateiinhalte sind unendlich, mögliche Hashes nicht. In der Praxis bedeutet dies, dass Sie eine Schwachstelle im Algorithmus gefunden haben, die das Hash für Sicherheitszwecke unbrauchbar macht.

0

Hier ist ein weiterer Trick ...

Speicher Hash in Anfang der Datei und berechnen MD5, dass Region und nur wichtige Daten auszuschließen.

"HashMD5 = Md5.ComputeHash(bytes, 382, bytes.Length - 382)" 

So zählt es Hash nur für Datenbereich

(Custom Datenstruktur nach 382 in Dateipuffer Position offset) ------------------- ---- Beispiel Datenstruktur folgen -----------

<StructLayout(LayoutKind.Sequential, Pack:=1, CharSet:=CharSet.Ansi)> 
<Serializable()> Structure MyData 
    Dim FileCheckSum() As Byte '16 bytes HASh for file 'Config.bin' 
    Dim Padding() As Byte  ' 0xFF x 20 bytes 
    Dim RemoteDevice As RmtDevice 

End Structure 

schreiben diese str In begining config.bin mit „xxxx.FileSystem einzureichen.(WriteAllBytes)“

Dann öffnet config-Datei mit Hex-Editor Position des Polsterelement Start finden (in meinem Fall war es 382)

Später verwenden Sie diese nicht als Offset zu MD5 eher auf ganze Datei zu berechnen. So kann eine wenig Sicherheit gegen Daten korrupt hat

Hinweis !! -. Solange keine Strukturelemente/Ordnung/Element nos bleibt gleiche Polsterung Startposition gleich bleibt

für mich arbeiten ..

Geprüft. .net

Verwandte Themen