Hallo Ich brauche einen SHA über eine 5-Gig-Datei zu erzeugenDelphi: Wie der SHA-Hash einer großen Datei berechnen
Haben Sie eines nicht Zeichenfolge wissen basierte Delphi-Bibliothek, die dies tun können?
Hallo Ich brauche einen SHA über eine 5-Gig-Datei zu erzeugenDelphi: Wie der SHA-Hash einer großen Datei berechnen
Haben Sie eines nicht Zeichenfolge wissen basierte Delphi-Bibliothek, die dies tun können?
Sie sollten DCPcrypt v2 verwenden und Ihre Datei gepuffert lesen und den SHA-Hasher mit dem Puffer füttern, bis Sie die vollständige 5GB-Datei gelesen haben.
Wenn Sie wissen möchten, wie eine große Datei gepuffert lesen, finden Sie in meiner Antwort about a file copy using custom buffering.
so in Konzept (kein wirklicher delphi-Code!):
function GetShaHash(const AFilename: String)
begin
sha := TSHAHasher.Create;
SetLength(Result, sha.Size);
file := OpenFile(AFilename, GENERIC_READ);
while not eof file do
begin
BytesRead := ReadFile(file, buffer[0], 0, 1024 * 1024);
sha.Update(buffer[0], BytesRead);
end;
sha.Final(Result[0]);
CloseFile(file);
end;
Es gibt eine Delphi-Schnittstelle für OpenSSL, oder?
Das sollte Ihnen bessere Leistungen bieten.
würde ich Wolfgang Ehrhardt CRC/Hash empfehlen.
http://home.netsurf.de/wolfgang.ehrhardt/
Es ist schnell und „kann bis zu V7/mit den meisten aktuellen Pascal (TP 5/5,5/6, BP 7, VP 2.1, FPC 1.0/2.0/2.2) und Delphi-Versionen (getestet mit V1 kompiliert 9/10) ".
Ich habe es auch mit D11/D12 verwendet.
ja, das ist auch eine nette, sehr schöne asm optimalisierungen :) –
Wenn ich mich richtig erinnere, kommt Indy mit mehreren Stream-basierten Hash-Methoden.
Ich habe keinen echten Delphi-Code verwendet, da ich im Moment keinen Delphi-Compiler installiert habe. –