Ответ 1
Вы должны использовать DCPcrypt v2 и прочитать свой файл с буферизацией и передать шейдер SHA с помощью буфера, пока не прочитаете полный файл размером 5 ГБ.
Если вы хотите узнать, как читать большой файл с буферизацией, см. мой ответ о копировании файла с использованием пользовательской буферизации.
так что в концепции (нет реального кода 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;