Delphi: как вычислить хэш SHA большого файла
Привет, мне нужно создать SHA над файлом 5 Gig
знаете ли вы о не Строковой библиотеке Delphi, которая может это сделать ?
4 ответов
вы должны использовать 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;
Я бы рекомендовал 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.
существует интерфейс Delphi для OpenSSL, не так ли?
Это должно обеспечить вам лучшие характеристики.