Delphi计算TStream哈希/校验和

Delphi计算TStream哈希/校验和,delphi,Delphi,我正在寻找一种快速的方法来计算TStream(TMemoryStream)的校验和。其目的是存储散列,并使用它来检测在某些操作之后校验和是否发生了变化 这是我的代码: function GetChecksum(const Stream: TStream): String; var MD5: TIdHashMessageDigest5; begin MD5 := TIdHashMessageDigest5.Create; try Result := MD5.HashStr

我正在寻找一种快速的方法来计算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;
它可以工作,但是如果流量很大,速度有点慢


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

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

对于校验和,您可以尝试更简单的算法,如
BobJenkinsHash
(S)


此外,您还可以检查MD5的性能和实现情况“但是对于大数据流来说有点慢”——什么是“慢”,您认为它为什么慢?与什么相比?@MBo Thank System.Hash.THashBobJenkins.GetHashValue是perfect@ar099968好的,所以我将comment转换为answery,它还有其他可用的散列类,但只有MD5,也许CRC16或CRC32可以满足您的需要