Um das zu kompletieren. Gibt es jemanden der eine funktionierende Implementierung (Datei / Stream hashen) mit den WE-Units fertig bekommt?
Also ohne diese WE units zu kennen, müsste es so gehen :
Nein, nicht ganz. Hier ein Konsol-Prgramm, das paramstr(1) hasht.
Delphi-Quellcode:
program md5file;
{$apptype console}
uses
system.classes,
hash, md5, mem_util;
function MD5F(const AFileName: String): string;
var
Context: THashContext;
Hash: TMD5Digest;
aStream : TMemoryStream;
begin
aStream := TMemoryStream.Create;
aStream.LoadFromFile(AFileName);
MD5Init(Context);
MD5UpdateXL(Context, aStream.Memory, aStream.Size);
MD5Final(Context, Hash);
Result := string(Mem_Util.HexStr(@Hash, SizeOf(Hash)));
aStream.Free;
end;
begin
writeln(MD5F(paramstr(1)));
end.
Und das Ergebnis für ein File mit 512 MB nur 'a':
Code:
D:\Work\CRC_HASH>timethis md5file 512MB_A
TimeThis : Command Line : md5file 512MB_A
TimeThis : Start Time : Sun Nov 26 20:32:01 2017
31e4d9c6d74cd592b78f77f72965d6ab
TimeThis : Command Line : md5file 512MB_A
TimeThis : Start Time : Sun Nov 26 20:32:01 2017
TimeThis : End Time : Sun Nov 26 20:32:04 2017
TimeThis : Elapsed Time : 00:00:02.840