7
votes
  1. How do I hash files with C#
  2. What is available ? (md5, crc, sha1, etc)
  3. Is there an interface i should inherit?

I want to checksum multiple files and store it in a db along with using two of my own checksums/hashes.

3

3 Answers

15
votes

1.) How do i hash files with C#?

You can utilize .NET classes under System.Security.Cryptography

2.) What is available?

3.) Is there an interface i should inherit?

No you don't have to. Take a look at HashAlgorithm.Create(...)

5
votes

Snippet

byte[] result; 
SHA1 sha = new SHA1CryptoServiceProvider(); 
using(FileStream fs = File.OpenRead(@"file.txt"))
{
   result = sha.ComputeHash(fs);
}

See also SHA1CryptoServiceProvider or MD5CryptoServiceProvider.

CRC is not available -- it's more efficient to create your own.

1
votes

What are you trying to achieve with the hashes? If you're trying to actually guarantee that nobody maliciously altered the files, please don't implement your own checksum or hash. You'll probably make some mistake and someone will be able to tamper with a file and have the checksums still match. Use a good hash function like SHA-256.