|
Подписать хэш файла | ☑ | ||
---|---|---|---|---|
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 указали, чем и ввели в заблуждение)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |