在这个问题中提到了wcrypt2.
我需要的只是计算文件的MD5.如果我可以计算它而不必保存它将是完美的,因为它是以流格式下载的文件.
我想有最直接的方式来做到这一点.
谢谢!
这是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
基于@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;