고통스러운 디버깅 세션 후에 나는 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에 대한 업데이트를 확인했습니다. 일단 수정 프로그램이 작동 중임을 확인하면 티켓을 닫을 것입니다. –