Delphi计算TStream哈希/校验和

时间:2019-07-04 09:32:11

标签: delphi

我正在寻找一种计算TStream(TMemoryStream)校验和的快速方法。目的是存储散列,并将其用于检测某些操作后是否更改了校验和。

这是我的代码:

function GetChecksum(const Stream: TStream): String;
var 
  MD5: TIdHashMessageDigest5;
begin
  MD5 := TIdHashMessageDigest5.Create;
  try
      Result := MD5.HashStreamAsHex(Stream);
  finally
      MD5.Free;
  end;
end;

它可以工作,但是流很大会有点慢。

有一种快速计算流校验和的方法吗?

1 个答案:

答案 0 :(得分:2)

此代码计算MD5-这是加密哈希,相当复杂且缓慢。

对于校验和,您可以尝试使用更简单的算法,例如BobJenkinsHash(S ystem.Hash.THashBobJenkins.GetHashValue)。

您还可以检查MD5的Spring4dDCPCrypt实现的性能