Seite 1 von 1
MD5 in 5.24 und 5.70 liefern andere Ergebnisse
Verfasst: 05.03.2019 12:54
von Agent
Hallo.
Mache ich einen Denkfehler (ich vermute es fast), oder warum liefert PB 5.24 einen anderen Hash-Wert bei MD5 als die aktuelle 5.70?
Code 5.24, 32bit:
Code: Alles auswählen
hash$ = "md5fingerprint"
*buf = AllocateMemory(Len(hash$))
PokeS(*buf, hash$)
Debug MD5Fingerprint(@hash$, StringByteLength(hash$))
Debug MD5Fingerprint(*buf, MemorySize(*buf))
FreeMemory(*buf)
Ergebnis:
a8589284699515169341c24943dc2e4a
Code 5.70, 32bit:
Code: Alles auswählen
UseMD5Fingerprint()
hash$ = "md5fingerprint"
Debug StringFingerprint(hash$, #PB_Cipher_MD5)
Ergebnis:
1ee00e60057f93d028be5bb501f04b0d

Re: MD5 in 5.24 und 5.70 liefern andere Ergebnisse
Verfasst: 05.03.2019 13:02
von RSBasic
Der Unterschied ist der Zeichensatz.
ASCII (1 Zeichen): 1ee00e60057f93d028be5bb501f04b0d
Unicode (2 Zeichen): a8589284699515169341c24943dc2e4a
Benutze #PB_Ascii, das sollte richtig sein.
Re: MD5 in 5.24 und 5.70 liefern andere Ergebnisse
Verfasst: 05.03.2019 13:22
von Agent
Servus.
Ich habe unter 5.24 sowohl als ASCII als auch als UNICODE gestartet. Gleiches Ergebnis. Oder hab ich dich falsch verstanden?
Re: MD5 in 5.24 und 5.70 liefern andere Ergebnisse
Verfasst: 05.03.2019 13:26
von Agent
Wenn ich in 5.7
Code: Alles auswählen
UseMD5Fingerprint()
hash$ = "md5fingerprint"
Debug StringFingerprint(hash$, #PB_Cipher_MD5, #PB_Ignore, #PB_Ascii)
starte (also mit #pb_ascii) bleibt das Ergebnis aber gleich o.O
Re: MD5 in 5.24 und 5.70 liefern andere Ergebnisse
Verfasst: 05.03.2019 14:11
von #NULL
Muss man da nicht StringByteLength() verwenden, zumindestens bei Unicode? Bzw. es muss ja der Hash genug Platz haben, was eigentlich nichts mit der Länge des ursprünglichen Strings zu tun hat. Das Beispiel in der Hilfe zu MD5Fingerprint() verwendet einfach AllocateMemory(500).
<edit>ach so, da kommt ja erstmal der ursprüngliche String rein. StringByteLength() wäre trotzdem besser(?)
Re: MD5 in 5.24 und 5.70 liefern andere Ergebnisse
Verfasst: 05.03.2019 16:26
von juergenkulow
Code: Alles auswählen
;PB 5.70 64bit
UseMD5Fingerprint()
hash$ = "md5fingerprint"
Debug StringFingerprint(hash$,#PB_Cipher_MD5,0,#PB_Ascii) ; 1ee00e60057f93d028be5bb501f04b0d
Debug StringFingerprint(hash$,#PB_Cipher_MD5,0,#PB_UTF8) ; 1ee00e60057f93d028be5bb501f04b0d
Debug StringFingerprint(hash$,#PB_Cipher_MD5,0,#PB_Unicode) ; d18833da01fedaa8b340a7f62f1a49ea
ShowMemoryViewer(@hash$,Len(Hash$)*2)
; @hash$: 6D 00 64 00 35 00 66 00 69 00 6E 00 67 00 65 00 m.d.5.f.i.n.g.e.
; 72 00 70 00 72 00 69 00 6E 00 74 00 r.p.r.i.n.t.
MessageRequester("","")
*ptrhash=AllocateMemory(Len(hash$))
PokeS(*ptrhash,hash$,-1,#PB_Ascii)
Debug Fingerprint(*ptrhash,Len(hash$), #PB_Cipher_MD5) ; 1ee00e60057f93d028be5bb501f04b0d
ShowMemoryViewer(*ptrhash,Len(hash$)+2)
; *ptrhash: 6D 64 35 66 69 6E 67 65 72 70 72 69 6E 74 00 00 md5fingerprint..
Debug Fingerprint(@hash$,Len(hash$)*2,#PB_Cipher_MD5) ; d18833da01fedaa8b340a7f62f1a49ea
Debug Fingerprint(@"md5fing",14,#PB_Cipher_MD5) ; a8589284699515169341c24943dc2e4a
MessageRequester("","")
ShowMemoryViewer(@"md5fing",16) ; 6D 00 64 00 35 00 66 00 69 00 6E 00 67 00 00 00 m.d.5.f.i.n.g...
Edit: 3. Parameter von StringFingerprint ergänzt, sowie Parameter Größe bei Fingerprint *2 und Fingerprint(@"md5fing",...