嗨我需要在5 Gig文件上生成SHA
你知道一个非字符串的Delphi库可以做到这一点吗?
您应该使用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;
我会推荐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.