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

Cha*_*iga 11 delphi sha

嗨我需要在5 Gig文件上生成SHA

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

Dav*_*man 14

您应该使用DCPcrypt v2并读取缓冲的文件并将SHA hasher与缓冲区一起提供,直到您阅读完整的5GB文件为止.

如果您想知道如何读取缓冲的大文件,请参阅我使用自定义缓冲的文件副本的答案.

所以在概念上(没有真正的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], 0, 1024 * 1024);
     sha.Update(buffer[0], BytesRead);
  end;
  sha.Final(Result[0]); 
  CloseFile(file);
end;
Run Code Online (Sandbox Code Playgroud)


Pet*_*riW 5

我会推荐Wolfgang Ehrhardt的CRC/Hash.
http://home.netsurf.de/wolfgang.ehrhardt/

它速度很快,"可以使用最新的Pascal(TP 5/5.5/6,BP 7,VP 2.1,FPC 1.0/2.0/2.2)和Delphi版本(使用V1至V7/9/10测试)进行编译".

我也用过D11/D12.