Существует ли альтернативный алгоритм хеширования для MD5 для систем с поддержкой FIPS?
Всякий раз, когда я пытаюсь использовать MD5 на компьютере с Windows XP, на котором включена поддержка FIPS, я получаю System.InvalidOperationException
,
Есть ли альтернативный алгоритм, который я должен использовать вместо MD5 на FIPS?
4 ответа
MD5 не соответствует FIPS. Вместо MD5 вы можете использовать один из следующих алгоритмов хеширования:
Когда вы применяете FIPS-соответствие в настройках политики безопасности Windows, вы утверждаете, что собираетесь использовать только FIPS-сертифицированные алгоритмы шифрования и хэширования. MD5 не является одним из этих утвержденных алгоритмов хеширования, и поэтому возникает исключение.
Обходной путь прост: выберите другой алгоритм хеширования..NET Framework предоставляет множество других опций в System.Security.Cryptography
пространство имен. Выберите один из алгоритмов семейства SHA. Я не могу представить причину, по которой вам пришлось бы использовать MD5, а не одну из альтернатив.
Вы можете использовать MD5Digest от Org.BouncyCastle.Crypto.Digests
MD5Digest hash = new MD5Digest();
public byte[] Hash(byte[] input)
{
hash.BlockUpdate(input, 0, input.Length);
byte[] result = new byte[hash.GetDigestSize()];
hash.DoFinal(result, 0);
return result;
}
public string Hash(string input)
{
var data = System.Text.Encoding.Unicode.GetBytes(input);
hash.BlockUpdate(data, 0, data.Length);
byte[] result = new byte[hash.GetDigestSize()];
hash.DoFinal(result, 0);
return Hex.ToHexString(result).ToUpper();
}
Для целей криптографического хеширования вы можете использовать SHA1, SHA2 или SHA3 с HMAC, если это необходимо.
Если вы хотите использовать MD5 для целей, не связанных с криптографией , это нормально, но вам нужно будет предоставить собственную реализацию. Примеры включают:
- Хеширование файлов для определения дубликатов
- Реализации внутренних хеш-таблиц
- Проверка файлов по их предоставленным хэшам MD5
Последний пункт вызывает сомнения; проверка хэшей SHA1/SHA2 была бы лучше, и это зависит от проверки (например, был ли он поврежден при передаче по сравнению с аутентификацией пакета).