Вы используете любой производный HashAlgorithm для генерации хэша из массива байтов файла. Обычно используется MD5, но вы можете заменить его любым из тех, что представлены в пространстве имен System.Security.Cryptography. Это работает для любого двоичного файла, а не только для изображений.
Многие сайты предоставляют хэши MD5 при загрузке файлов, чтобы проверить, правильно ли вы загрузили файл. Например, в образе ISO CD/DVD могут отсутствовать байты, когда вы получили его целиком. После того, как вы загрузили файл, вы генерируете для него хэш и убеждаетесь, что он такой же, как и должен быть на сайте. Если все сравнить, то у вас точная копия.
Я бы, вероятно, использовал что-то похожее на это:
public static class Helpers
{
//If you're running .NET 2.0 or lower, remove the 'this' keyword from the
//method signature as 2.0 doesn't support extension methods.
static string GetHashString(this byte[] bytes, HashAlgorithm cryptoProvider)
{
byte[] hash = cryptoProvider.ComputeHash(bytes);
return Convert.ToBase64String(hash);
}
}
Требует:
using System.Security.Cryptography;
Позвоните, используя:
byte[] bytes = File.ReadAllBytes("FilePath");
string filehash = bytes.GetHashString(new MD5CryptoServiceProvider());
или если вы работаете в .NET 2.0 или ниже:
string filehash = Helpers.GetHashString(File.ReadAllBytes("FilePath"), new MD5CryptoServiceProvider());
Если бы вы решили использовать другой метод хеширования вместо MD5 для незначительной вероятности коллизий:
string filehash = bytes.GetHashString(new SHA1CryptoServiceProvider());
Таким образом, ваш метод has не зависит от поставщика криптографии, и если вы решите, что хотите изменить используемого провайдера криптографии, вы просто вводите другой в параметр cryptoProvider.
Вы можете использовать любой из других классов хеширования, просто изменив поставщика услуг, который вы передаете:
string md5Hash = bytes.GetHashString(new MD5CryptoServiceProvider());
string sha1Hash = bytes.GetHashString(new SHA1CryptoServiceProvider());
string sha256Hash = bytes.GetHashString(new SHA256CryptoServiceProvider());
string sha384Hash = bytes.GetHashString(new SHA384CryptoServiceProvider());
string sha512Hash = bytes.GetHashString(new SHA512CryptoServiceProvider());
person
BenAlabaster
schedule
02.12.2009