Макрос рассчета HASH файлов по ГОСТ Р 34.11 - 94
Сохранить в файлеОбсудить в форуме
Описание
Для организации хранилища ДЭВ и других задач требуется расчет ХЭШ функции файлов по ГОСТ Р 34.11 - 94.
У Криптоком есть для этого готовая утилита, для работы из командной строки - CALCHASH.exe
При запуске получаем следующую информацию об утилите:
C:\openssl\bin>calchash.exe
Программа контроля целостности файлов calchash в.4.3.0.0
Вычисление хэш-вектора производится по ГОСТ Р 34.11 - 94.
Стартовый вектор хэширования и заполнение узлов замены
взяты из контрольного примера, приведенного в приложении
к тексту ГОСТ Р 34.11 - 94.
ПАРАМЕТРЫ ВЫЗОВА:
1. <имя файла, для которого нужно вычислить хэш-вектор>.
(C) DimKa Software Ltd. 1996. (С) OOO "Криптоком" 2008
FreeWare.
т.е требованиям ГОСТ а соответственно указанию Указанию ЦБР № 2346-У удовлетворяет.
осталось написать макрофункцию, которую можно было бы использовать в других прикладных макросах, в виде:
hash = hash_file(namefile);
Входной параметр строка - путь к файлу, на выходе строка - значение ХЭШ функции.
Для информации:
Файл CALCHASH.EXE входит в состав разных приложений КРИПТОКОМ. Если банк использует клиент-банк с криптозащитой от КРИПТОКОМ, то можно его найти в составе крипто-утилит развернутых на сервере. Если не найдете, то рекомендую скачать с сайта Криптокома Ознакомительная версия «МагПро OpenVPN-ГОСТ» http://www.cryptocom.ru/opensource/pkgs/windows/client.zip
Развернуть из архива инсталяшку Cryptopack.exe и оттуда забрать CALCHASH.EXE.
Результаты контрольного примера рассчета ХЭШ из ГОСТ Р 34.11 - 94.
GOST("This is message, length=32 bytes") =
B1C466D3 7519B82E 8319819F F32595E0 47A28CB6 F83EFF1C 6916A815 A637FFFA
У Криптоком есть для этого готовая утилита, для работы из командной строки - CALCHASH.exe
При запуске получаем следующую информацию об утилите:
C:\openssl\bin>calchash.exe
Программа контроля целостности файлов calchash в.4.3.0.0
Вычисление хэш-вектора производится по ГОСТ Р 34.11 - 94.
Стартовый вектор хэширования и заполнение узлов замены
взяты из контрольного примера, приведенного в приложении
к тексту ГОСТ Р 34.11 - 94.
ПАРАМЕТРЫ ВЫЗОВА:
1. <имя файла, для которого нужно вычислить хэш-вектор>.
(C) DimKa Software Ltd. 1996. (С) OOO "Криптоком" 2008
FreeWare.
т.е требованиям ГОСТ а соответственно указанию Указанию ЦБР № 2346-У удовлетворяет.
осталось написать макрофункцию, которую можно было бы использовать в других прикладных макросах, в виде:
hash = hash_file(namefile);
Входной параметр строка - путь к файлу, на выходе строка - значение ХЭШ функции.
Для информации:
Файл CALCHASH.EXE входит в состав разных приложений КРИПТОКОМ. Если банк использует клиент-банк с криптозащитой от КРИПТОКОМ, то можно его найти в составе крипто-утилит развернутых на сервере. Если не найдете, то рекомендую скачать с сайта Криптокома Ознакомительная версия «МагПро OpenVPN-ГОСТ» http://www.cryptocom.ru/opensource/pkgs/windows/client.zip
Развернуть из архива инсталяшку Cryptopack.exe и оттуда забрать CALCHASH.EXE.
Результаты контрольного примера рассчета ХЭШ из ГОСТ Р 34.11 - 94.
GOST("This is message, length=32 bytes") =
B1C466D3 7519B82E 8319819F F32595E0 47A28CB6 F83EFF1C 6916A815 A637FFFA
Текст примера
/* Кучеров С. макрос вычисления хэш файла через внешнюю утилиту... !!! calchash.exe - положить в папку OBJ !!! */ import bankinter,rsexts; private macro hash_pravo_levo(zz); var ss="",l,b; zz=strsubst(zz," ",""); if (strlen(zz)!=64) return "FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF"; end; l=63;b=0; while (l>0) ss=ss+substr(zz,l,2); b=b+1; if (b==4) ss=ss+" "; b=0; end; l=l-2; end; //while return trim(ss); end; //macro macro hash_file(namefile) var fo=GetWorkFileName("hash"),zz=""; file aa () txt; if (run ("calchash",strfor(34)+namefile+strfor(34), ">"+fo) == 0) open(aa,fo); while (next(aa)) zz=aa.str; end; close(aa); removefile(fo); end; return hash_pravo_levo(zz); end; //macro //test //msgbox(hash_file("\\\\srvrsbank\\txtfile\\test1.txt"));