Имя: Пароль:
1C
 
Подписать хэш файла
,
0 cmex
 
04.07.22
19:25
Добрый день!

Требуется подписать хэш файла, хэш вычисляется по алгоритму Gost34112012 - 256. Кто нибудь сталкивался с подобной задачей? Есть внешняя компонента от КриптоПро Cadescom hasheddata, но ей на вход передается строка. А как бы ДД передать?
2 baza1
 
04.07.22
20:37
а консольная утилита RHash не подходит?
3 cmex
 
04.07.22
22:43
(2) не, надо средствами 1с, максимум компоненту какую внешнюю использовать
4 cmex
 
05.07.22
09:32
оп
5 arsik
 
гуру
05.07.22
09:46
(0) Тебе для чего? Обычно Gostr34112012 для подписи сообщений используется в виде XML пакета. А внутрь XML можно и ДД закинуть.
6 cmex
 
05.07.22
10:27
(5) для оправки вложений в письмо в банк
7 arsik
 
гуру
05.07.22
10:32
(6) Ну так вложение в письмо скорее всего в base64. Ну вот и сконвертируй ДД в base64 и используй Gostr34112012.
8 arsik
 
гуру
05.07.22
10:37
Почитал http://www.cbr.ru/statichtml/file/59420/standart_6_1_2020_30092019.pdf
Везде кодируется Base64, даже если передается в другом формате.
9 cmex
 
05.07.22
10:54
(7) так и делал, результат хэширования отличается от того, ктр вычисляется консольной утилитой от КриптоПро(
10 cmex
 
05.07.22
10:56
ДД = Новый ДвоичныеДанные(ИмяФайл);
ДанныеДляПодписи = Base64Строка(ДД);
И далее передаю её во внешнюю компоненту. Не работает. Может кодировка где не та? Но где ее указывать?
11 arsik
 
гуру
05.07.22
10:59
(9) А что за консольная утилита крипто про?
12 cmex
 
05.07.22
11:03
13 arsik
 
гуру
05.07.22
11:10
При расчете хэша (CPHashedData) что в DataEncoding указываешь? Может там нужно поиграть?
14 arsik
 
гуру
05.07.22
11:23
https://docs.cryptopro.ru/cades/reference/cadescom/cadescom_enum/cadescom_content_encoding_type
Тебе нужно в DataEncoding указать CADESCOM_BASE64_TO_BINARY Кодировка BASE64. 0x01
15 arsik
 
гуру
05.07.22
11:25
https://docs.cryptopro.ru/cades/reference/cadescom/cadescom_interface/icphasheddatadataencoding
Данное свойство задает кодировку данных, передаваемых в метод Hash, и должно быть задано до того, как будет впервые вызван метод Hash. По умолчанию свойство имеет значение CADESCOM_STRING_TO_UCS2LE. Задание свойства DataEncoding сбрасывает состояние объекта.
16 arsik
 
гуру
05.07.22
11:33
Короче в этом параметре единичку нужно указать перед расчетом хеша.
17 cmex
 
05.07.22
12:36
(16) Да, с 1 работает правильно, спасибо! Но я ее и ставил как в примере. Оказалось, что исходный хэш образец был некорректен, а в 1с правильный
18 arsik
 
гуру
05.07.22
12:43
(17) Но ты сказал, что cpverify.exe дает другое значение хеша. Какой еще исходный образец?
19 cmex
 
05.07.22
13:00
(18) прошу прощения, ввел в заблуждение я вас, как и меня ввели. мне прислали результат работы cpverify.exe, и это был образец, но потом я сам проверил и cpverify.exe выдал такой же хэш как и 1с, и оказалось, что в банке не тот алгоритм в cpverify.exe указали, чем и ввели в заблуждение)