在this question中提到了wcrypt2。
我需要的是简单地计算一个文件的MD5。如果我可以计算它而不必保存它,那就太完美了,因为它是以流格式下载的文件。
我希望有最直接的方法来做到这一点。
谢谢!
发布于 2010-10-20 19:28:04
以下是Indy 10的工作代码:
function MD5File(const FileName: string): string;
var
IdMD5: TIdHashMessageDigest5;
FS: TFileStream;
begin
IdMD5 := TIdHashMessageDigest5.Create;
FS := TFileStream.Create(FileName, fmOpenRead or fmShareDenyWrite);
try
Result := IdMD5.HashStreamAsHex(FS)
finally
FS.Free;
IdMD5.Free;
end;
end;
致敬,OscaR1
发布于 2009-01-16 14:39:29
基于@dummzeuch answere,我写了这个函数:
function getMD5checksum(s: TStream): string;
var
md5: TIdHashMessageDigest5;
hash : T4x4LongWordRecord;
begin
md5 := TIdHashMessageDigest5.Create;
s.Seek(0,0);
hash := md5.HashValue(s);
result := IntToHex(Integer(hash[0]), 4) +
IntToHex(Integer(hash[1]), 4) +
IntToHex(Integer(hash[2]), 4) +
IntToHex(Integer(hash[3]), 4);
end;
发布于 2009-01-15 19:42:48
Indy提供了计算多个散列的函数,MD5就是其中之一。从Delphi 2006开始,所有版本的Delphi都包含Indy,旧版本可以免费下载。
https://stackoverflow.com/questions/447985
复制相似问题