经过痛苦的调试会话后,我发现TIdHashSHA1.HashStream
不尊重它的ASize
参数。考虑以下代码:在Delphi 2010中TIdHashSHA1.HashStream是否被破解?
var
Hasher: TIdHashSHA1;
MS: TMemoryStream;
begin
MS := TMemoryStream.Create;
Hasher := TIdHashSHA1.Create;
try
MS.LoadFromFile('C:\windows\notepad.exe');
MS.Position := 0;
ShowMessage(Hasher.HashStreamAsHex(MS));
MS.Position := 0;
ShowMessage(Hasher.HashStreamAsHex(MS, 0, MS.Size - 10));
finally
Hasher.Free;
MS.Free;
end;
end;
结果是一样的。这是一个错误还是我做错了什么?如果这确实是一个错误,那么绕过它最简单的方法是什么,而不需要复制我想要散列的流的部分?
门票,以防某人的好奇心:http://indy.codeplex.com/workitem/24912 – eis
另外:http://code.google.com/p/indyproject/issues/detail?id=270 –
@ ThijsvanDien:我已经在Indy的SVN中检查了更新到“TIdHashSHA1”。一旦你确认修补程序正在工作,我将关闭门票。 –