es gibt noch die DCP Sachen, die haben auch MD5 mit drin, sind open source und nicht so vollgeladen wie die
Indy Komponenten.
Da geht es dann so :
Code:
uses DCPmd5;
function FileMD5(const AFileName: string): String;
var DCP_md51: TDCP_md5;
aStream: TFileStream;
Buffer: array[0..16383] of Byte;
Read, i : Integer;
HashDigest: array of byte;
begin
DCP_md51 := TDCP_md5.Create(nil);
DCP_md51.Init;
aStream := TFileStream.Create(AFileName, fmOpenRead);
Repeat
Read := aStream.Read(Buffer, Sizeof(Buffer));
DCP_md51.Update(Buffer, Read)
Until Read <> Sizeof(Buffer);
aStream.Free;
SetLength(HashDigest, DCP_md51.HashSize div 8);
DCP_md51.Final(HashDigest[0]); // Read the MD5
Result := EmptyStr;
for i := 0 to Length(HashDigest) - 1 Do // end convert into hex
Result := Result + IntToHex(HashDigest[i], 2);
DCP_md51.Free;
end;