C# hashes

2019-04-25 09:23发布

问题:

I'm new to C#

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

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

回答1:

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

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

2.) What is available?

  • KeyedHashAlgorithm
  • MD5
  • RIPEMD160
  • SHA1
  • SHA256
  • SHA384
  • SHA512

3.) Is there an interface i should inherit?

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



回答2:

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.



回答3:

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.



标签: c# hash