Delphi:如何计算一个大文件的SHA哈希

前端之家收集整理的这篇文章主要介绍了Delphi:如何计算一个大文件的SHA哈希前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
嗨,我需要通过一个5千兆文件生成一个SHA

你知道一个非基于字符串的Delphi库,可以做到这一点吗?

解决方法

您应该使用 DCPcrypt v2并读取缓冲的文件,并将缓冲区的缓冲区提供给缓冲区,直到您读取完整的5GB文件.

如果你想知道如何读取大文件缓冲,请参阅我的答案about a file copy using custom buffering.

所以在概念上(没有真正的delphi代码!):

function GetShaHash(const AFilename: String)
begin
  sha := TSHAHasher.Create;
  SetLength(Result,sha.Size);
  file := OpenFile(AFilename,GENERIC_READ);
  while not eof file do
  begin
     BytesRead := ReadFile(file,buffer[0],1024 * 1024);
     sha.Update(buffer[0],BytesRead);
  end;
  sha.Final(Result[0]); 
  CloseFile(file);
end;

猜你在找的Delphi相关文章