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