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


Bild

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

Code: Alles auswählen

*buf = AllocateMemory(Len(hash$))
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",...