sha1managed generar encriptar ejemplo desencriptar contraseña codigo c# .net sha1 checksum

generar - ¿Cómo hago una suma de comprobación de archivo SHA1 en C#?



sha1 c# ejemplo (4)

Con el método ComputeHash. Mira aquí:

ComputeHash

Fragmento de ejemplo:

using(var cryptoProvider = new SHA1CryptoServiceProvider()) { string hash = BitConverter .ToString(cryptoProvider.ComputeHash(buffer)); //do something with hash }

Donde buffer es el contenido de su archivo.

¿Cómo uso el SHA1CryptoServiceProvider() en un archivo para crear una suma de comprobación SHA1 del archivo?


Si ya está leyendo el archivo como un flujo, la siguiente técnica calcula el hash a medida que lo lee. La única advertencia es que necesitas consumir todo el flujo.

class Program { static void Main(string[] args) { String sourceFileName = "C://test.txt"; Byte[] shaHash; //Use Sha1Managed if you really want sha1 using (var shaForStream = new SHA256Managed()) using (Stream sourceFileStream = File.Open(sourceFileName, FileMode.Open)) using (Stream sourceStream = new CryptoStream(sourceFileStream, shaForStream, CryptoStreamMode.Read)) { //Do something with the sourceStream //NOTE You need to read all the bytes, otherwise you''ll get an exception ({"Hash must be finalized before the hash value is retrieved."}) while(sourceStream.ReadByte() != -1); shaHash = shaForStream.Hash; } Console.WriteLine(Convert.ToBase64String(shaHash)); } }


También puedes probar:

FileStream fop = File.OpenRead(@"C:/test.bin"); string chksum = BitConverter.ToString(System.Security.Cryptography.SHA1.Create().ComputeHash(fop));


using (FileStream fs = new FileStream(@"C:/file/location", FileMode.Open)) using (BufferedStream bs = new BufferedStream(fs)) { using (SHA1Managed sha1 = new SHA1Managed()) { byte[] hash = sha1.ComputeHash(bs); StringBuilder formatted = new StringBuilder(2 * hash.Length); foreach (byte b in hash) { formatted.AppendFormat("{0:X2}", b); } } }

formatted contiene la representación de cadena del hash SHA-1. Además, al utilizar un FileStream lugar de un búfer de bytes, ComputeHash calcula el hash en trozos, por lo que no tiene que cargar todo el archivo de una sola vez, lo que es útil para archivos grandes.