miércoles, 30 de septiembre de 2015

23. C# - HASH - Calculo de digestivo SHA1 para un archivo (Ayuda Rápida II)

Problema: Calcular el digestivo (HASH) SHA1 de un archivo
Proyecto: Genérico

Solución:

Esta función es muy útil por que nos permite obtener el hash de un archivo, por este medio podemos validar la integridad del mismo, una función hash nos entrega una cadena de caracteres que es equivalente a otra que se ha dado como entrada, estas funciones entregan una cadena de un tamaño arbitrario.

Una función hash es muy utilizada en la autenticación de usuarios o en la validación de la integridad de un archivo como es este caso, al ejecutar esta función sobre un archivo se obtiene una cadena especial que la podemos usar para determinar si dicho archivo ha sufrido una modificación.

Bueno la función para calcular el SHA-1 es la siguiente:


Y que hace?

Bueno el proceso que hacemos para obtener este digestivo es el siguiente:

1. Inicializamos el motor de criptografía

System.Security.Cryptography.SHA1CryptoServiceProvider oSHA1 =
            new System.Security.Cryptography.SHA1CryptoServiceProvider();

2. Leemos el archivo como un stream

            System.IO.FileStream fArchivo = new System.IO.FileStream(Archivo, System.IO.FileMode.Open,
                      System.IO.FileAccess.Read, System.IO.FileShare.ReadWrite);

3. Obtenemos el digestivo como un arreglo de datos

byte[] arrbytHashValue = oSHA1.ComputeHash(fArchivo);

4. Cerramos el stream como buena practica

fArchivo.Close();

5. Convertimos el arreglo de bytes a una cadena para que pueda ser visualizado

            string strHashData = System.BitConverter.ToString(arrbytHashValue);
            strHashData = strHashData.Replace("-", "");
            return strHashData;


Continuaremos con esta serie de Ayuda Rápida, sin embargo no he olvidado los pendientes que tengo con ustedes

Felices lineas

No hay comentarios.:

Publicar un comentario