delphi - desencriptar - sha256 como funciona
Delphi: Cómo calcular el hash SHA de un archivo grande (4)
Hola, necesito generar un SHA sobre un archivo de 5 Gig
¿Conoces una biblioteca Delphi no basada en cadenas que pueda hacer esto?
Hay una interfaz Delphi para OpenSSL, ¿no?
Eso debería proporcionarte mejores actuaciones.
Recomendaría CRC / Hash de Wolfgang Ehrhardt.
http://home.netsurf.de/wolfgang.ehrhardt/
Es rápido y "se puede compilar con la mayoría de las versiones actuales de Pascal (TP 5 / 5.5 / 6, BP 7, VP 2.1, FPC 1.0 / 2.0 / 2.2) y Delphi (probadas con V1 hasta V7 / 9/10)".
Lo he usado con D11 / D12 también.
Si mal no recuerdo, Indy viene con varios métodos hash basados en flujo.
Debe usar DCPcrypt v2 y leer su archivo en búfer y alimentar el hasher SHA con el búfer hasta que haya leído el archivo completo de 5GB.
Si desea saber cómo leer un archivo de gran tamaño en búfer, vea mi respuesta sobre una copia de archivo utilizando el almacenamiento en búfer personalizado .
por lo tanto, en concepto (¡sin código delphi real!):
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;