¿Sabes cómo calcular el hashing MD5 para un archivo o cadena utilizando Delphi?

El algoritmo MD5 Message-Digest es una función de hash criptográfico. MD5 se utiliza comúnmente para comprobar la integridad de los archivos, como para asegurarse de que un archivo ha sido inalterado.

 

Un ejemplo de esto es cuando se descarga un programa en línea. Si el distribuidor de software distribuye el hash MD5 del archivo, puede producir el hash usando Delphi y luego comparar los dos valores para asegurarse de que son los mismos. Si son diferentes, significa que el archivo que descargó no es el que solicitó en el sitio web y, por lo tanto, puede ser malicioso.

 

Un valor de hash MD5 tiene una longitud de 128 bits, pero normalmente se lee en su valor hexadecimal de 32 dígitos.

Cómo encontrar el hash MD5 usando Delphi

Usando Delphi, puede crear fácilmente una función para calcular el hash MD5 para cualquier archivo dado. Todo lo que necesitas está incluido en las dos unidades IdHashMessageDigest e idHash, las cuales forman parte de Indy.

 

Aquí está el código fuente:

 

 uses IdHashMessageDigest, idHash;

//returns MD5 has for a file

function MD5(const fileName : string) : string;

var

  idmd5 : TIdHashMessageDigest5;

  fs : TFileStream;

  hash : T4x4LongWordRecord;

begin

  idmd5 := TIdHashMessageDigest5.Create;

  fs := TFileStream.Create(fileName, fmOpenRead OR fmShareDenyWrite) ;

  try

    result := idmd5.AsHex(idmd5.HashValue(fs)) ;

  finally

    fs.Free;

    idmd5.Free;

  end;

end;

Otras formas de generar la suma de comprobación MD5

Aparte de usar Delphi hay otras formas de encontrar la suma de comprobación MD5 de un archivo. Un método es utilizar Microsoft File Checksum Integrity Verifier. Es un programa gratuito que sólo se puede utilizar en el sistema operativo Windows.

 

MD5 Hash Generator es un sitio web que hace algo similar, pero en lugar de producir la suma de comprobación MD5 de un archivo, lo hace a partir de cualquier cadena de letras, símbolos o números que pongas en el cuadro de entrada.

(0 votes)