1

Тема: hashfile.exe, ГОСТ 34.11-2012 и сторонние утилиты

Добрый день!
Хочется разобраться вот в каком вопросе: для контроля целостности использовали hashfile.exe 5.0.311.0 и оказалось, что есть различия с хэшом, получаемом по ГОСТ 34.11-2012.
Например если рассчитать хэш для текстового файла, содержащего ряд чисел 1234567890, то результаты будут следующими:
6AB21D9E1B3E18EA44A57F9F03658BFEA96167BA03EB978B1A553EC4C85BE367 vipnethashcalc_rus.exe
0000000C9E1DB26AEA183E1B9F7FA544FE8B6503BA6761A98B97EB03C43E551A67E35BC8 (hashfile.exe -F list  hash3.lst /G)
6AB21D9E1B3E18EA44A57F9F03658BFEA96167BA03EB978B1A553EC4C85BE367 (cpverify.exe -mk -alg GR3411_2012_256 test.txt -inverted_halfbytes 0)

Видно, что одинаковый результат у утилит от Випнета и Криптопро и разительно отличающийся даже длиной у вашего продукта. Не могли бы вы прокомментировать отчего такая разница? Спасибо.

2

Re: hashfile.exe, ГОСТ 34.11-2012 и сторонние утилиты

Добрый день!

В утилите hashfile в начало добавляется 4 байта - длина файла (0x0000000C = 12).
Далее различается формат вывода двоичных данных. Для соответствия нужно разбить хэш на блоки по 4 байта и записать байты в обратном порядке. Например, берем первый блок "6AB21D9E" -> "9E1DB26A".

9E1DB26A    EA183E1B    9F7FA544    FE8B6503    BA6761A9    8B97EB03    C43E551A    67E35BC8

6AB21D9E    1B3E18EA    44A57F9F    03658BFE    A96167BA    03EB978B    1A553EC4    C85BE367

3

Re: hashfile.exe, ГОСТ 34.11-2012 и сторонние утилиты

Добрый день!

Для расчет Хэша можно воспользоваться утилитой командной строки.

spki1utl.exe -hash -stream -algorithm "1.2.643.7.1.1.2.2" -data aaa.txt -minimal
Инициализация
Потоковое вычисление хэша файла
Результат: OK (00000000)
A62BD1E9B1E381AE445AF7F93056B8EF9A1676AB30BE79B8A155E34C8CB53E76

Был также выпущен патч  5.0.341.0 расширяющий функционал утилиты командной строки для представления результатов расчета (опция -format).

spki1utl.exe -hash -stream -algorithm "1.2.643.7.1.1.2.2" -format 2 -data aaa.txt -minimal
Инициализация
Потоковое вычисление хэша файла
Результат: OK (00000000)
6AB21D9E1B3E18EA44A57F9F03658BFEA96167BA03EB978B1A553EC4C85BE367