Какие алгоритмы хэширования файлов есть по ГОСТу 34.11-2012 на C#?
Вопрос 1. Подскажите что попадает во ГОСТ43.11-2012 из пространства имен?
System.Security.Cryptography.HashAlgorithm
System.Security.Cryptography.MD5 - точно нет.
System.Security.Cryptography.RIPEMD160
System.Security.Cryptography.SHA1
System.Security.Cryptography.SHA256
System.Security.Cryptography.SHA384
System.Security.Cryptography.SHA512
Вопрос 2. Есть ли реализация алгоритма проверки хэш файла на C# свободном доступе.
а 34.11-94?
есть как вариант использовать MD5 для получения контрольной суммы. Его вообще разумно использовать для таких целей? для паролей я так понял что не стоит его использовать. а вот для того что бы организовать контроль целостности программных модулей программы?
Вячеслав Бобров: Ну как бы считается старой вроде, если меня память не изменяет. Для паролей действительно лучше не применять. А вот целостность программных модулей вполне можно. Но я использую простой вариант: CRC32 / POSIX. Правда, у меня небольшие данные. Поэтому хватает за глаза и традиционного метода без распараллеливания.
Вячеслав Бобров: Любая операция требует параллельного выполнения. Даже старая. Вот вижу я, что там используется блок длиной 256 бит. Проще это всё гонять через SIMD. Стандартный SIMD AVX как раз имеет регистры 256 бит.
Если я правильно понял при подсчете crc32 контрольная сумма дописывается в файл?
Буду наверно все таки использовать md5. Он и встроенный в net есть. Без костылей, и побыстрее будет.
Вячеслав Бобров: обычно отдельно идёт. Но можно дописывать в файл. Главное, потом не забыть учесть его при проверке. Не знаю, как реализовано в NET. У меня используется собственная реализация. Так как у меня немного специфическая реализация.
Другие реализации так же работают. Может чуть быстрее. Проверял с помощью https://sourceforge.net/projects/cppcrypto/
Собрал cppcrypto (win32) и digest.exe для теста взял файл размером 121 544 704 байт
Запустил и в сравнении с MD5 тормоз.