我正在寻找一种计算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;
它可以工作,但是流很大会有点慢。
有一种快速计算流校验和的方法吗?
答案 0 :(得分:2)
此代码计算MD5-这是加密哈希,相当复杂且缓慢。
对于校验和,您可以尝试使用更简单的算法,例如BobJenkinsHash
(S ystem.Hash.THashBobJenkins.GetHashValue)。