![]() |
md5-Funktion versagt bei größeren Strings
Delphi-Quellcode:
Bei kleineren Strings kommt noch der richtige Hash raus, aber bei größeren ist er immer "53ceefef504648ec8063411a1fa3d1c2". Wo liegt denn das Problem?
uses WCrypt2;
... function md5(const Input: String): String; var hCryptProvider: HCRYPTPROV; hHash: HCRYPTHASH; bHash: array[0..$7f] of Byte; dwHashLen: DWORD; pbContent: PByte; i: Integer; begin dwHashLen := 16; pbContent := Pointer(PChar(Input)); Result := ''; if CryptAcquireContext(@hCryptProvider, nil, nil, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT or CRYPT_MACHINE_KEYSET) then begin if CryptCreateHash(hCryptProvider, CALG_MD5, 0, 0, @hHash) then begin if CryptHashData(hHash, pbContent, Length(Input), 0) then begin if CryptGetHashParam(hHash, HP_HASHVAL, @bHash[0], @dwHashLen, 0) then begin for i := 0 to dwHashLen - 1 do begin Result := Result + Format('%.2x', [bHash[i]]); end; end; end; CryptDestroyHash(hHash); end; CryptReleaseContext(hCryptProvider, 0); end; Result := AnsiLowerCase(Result); end; |
Re: md5-Funktion versagt bei größeren Strings
Zitat:
woher ist den denn Unit "WCrypt2" ? |
Re: md5-Funktion versagt bei größeren Strings
Ich schließe mich der Frage an. Vielleicht leigt der Fehler gar nicht bei deinem Code! Hast du den Quellcode der Crypt-Lib?
Ab wann tritt der Fehler denn auf? |
Re: md5-Funktion versagt bei größeren Strings
Liste der Anhänge anzeigen (Anzahl: 1)
Ich häng die unit mal an.
ich habe nur gemerkt, dass die Hashs bei größeren Strings immer gleich sind. |
Re: md5-Funktion versagt bei größeren Strings
|
Re: md5-Funktion versagt bei größeren Strings
Enthält input #0-Zeichen (oder Unicode)? Dann sind's vielleicht Probleme mit dem PChar-Typecast.
Gammatester |
Re: md5-Funktion versagt bei größeren Strings
Och nö, nicht schon wieder :kotz:
Dann muss ich wohl anders überprüfen ob eine Datei noch aktuell ist. |
Re: md5-Funktion versagt bei größeren Strings
Nimm einfach eine andere MD5 Implementation -- gibt ja genug davon.
|
Re: md5-Funktion versagt bei größeren Strings
So ich hab jetzt das hier gennomen:
http://assarbad.net/stuff/!export/md5.zip Zitat:
Delphi-Quellcode:
Bekommt man das weg?
// Write new 'state' back
State[0] := State[0] + a; Oder Soll ich was anderes nehmen? |
Re: md5-Funktion versagt bei größeren Strings
Eventuell ist der Überlauf geplant ... und man müßte nur die Prüfung abschalten. :gruebel:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:41 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz