04.01.2006 23:24:53Продолжение к вопросу 10.06.2004 13:51:24 CryptoApi Ответов: 3
nikita
RE: 2. Функции CryptEncryptMessage/CryptDecryptMessage работают с PKCS7 EnvelopedData, а утилитка cryptcp.exe – нет.

И что теперь делать? Если убрать PKCS_7_ASN_ENCODING из DecryptPara.dwMsgAndCertEncodingType, то функция CryptDecryptMessage выдает "Параметр задан неверно".
Вопрос, естессно, не риторический - в общем случае я не знаю точно КАК и ЧЕМ зашифрован файл, но расшифровать его НАДО: пробую с помощью cryptcp - все на ура, пробую с помощью CryptDecryptMessage - только некоторые...

И что теперь делать?
 
Ответы:
10.01.2006 11:33:35nikita
Я, наверное, не очень хорошо формулирую... ответов не появляется ;(
Попробую повторить вопрос:
Есть папка файлов, зашифрованных, все используются в системе электронного

обмена информацией по налоговым отчетам (kontur-extern)... пишу небольшой

такой "предпросмотрщик" на Delphi, на функции CryptDecryptMessage...
итак,
идет "просмотр" первого файла, нормально расшифровывается
идет "просмотр" второго файла, выдается ошибка "Встречено неверное значение

тэга ASN1"
проверяю корректность файлов (что должно получиться на выхлопе я заведомо

точно знаю, сам генерил эти файлы из трех разных софтов, сертификат

получателя естессно тот, который нужен), проверяю утилитой cryptcp.exe, все

нормально, без всякой запинки дешифруется И первый, И второй, И все

собственно остальные файлы.
Недоумеваю.
Анализирую Ваш форум, нахожу подобную проблему и вижу, что она как-то

решается ("...Функции CryptEncryptMessage/CryptDecryptMessage работают с

PKCS7 EnvelopedData, а утилитка cryptcp.exe – нет...")?
Резюмирую вопрос: какие параметры функции CryptDecryptMessage позволят

расшифровать файл, легко-дешифруемый утилитой cryptcp.exe ()?; нужно ли

использовать другие методы расшифровки?; какие?

Спасибо.
P.S. Позволил себе запостить ЭТО дважды: в продолжение своего вопроса и в

продолжение вопроса, на который в свое время давал ответ Вадим.

24.05.2006 17:50:53nikita
Совсем забыл, что полагается, когда ответ найден, его сюда писать:

Проблему решил.
Некторые из тех файлов после зашифровывания были (бывают) еще ..как это сказать.. "обработаны" в формат Base64 (Base64Encode), а некоторые нет, в этом и скрывалась суть термина "PKCS7 EnvelopedData".

Соответственно и при расшифровке нужно некоторые файлы сначала Base64Decode-декодировать, а потом уже подавать в CryptDecryptMessage; а некоторые (которые типа не по понятиям PKCS7 EnvelopedData зашифрованы) - непосредственно напрямую поббайтно в CryptDecryptMessage.

Вот так. Всем спасибо.
25.05.2006 10:35:18Kirill Sobolev
Суть термина PKCS7 EnvelopedData совсем не в этом :)
EnvelopedData - это сообщение, находящееся в "защищенном конверте" (envelope). Только получатель этого "конверта" может прочитать сообщение.
А base64 - это всего лишь текстовое представление бинарных данных (RFC 2045). Используется в почтовых программах, в html и т.д.