| ||||
| ||||
Добрый день! CryptEncryptMessage-функция шифрования и кодирования сообщения. В меня два вопроса: 1. Как в эту функцию попадает ключ шифрования? 2. И как с помощью этой функции зашифровать файл с созданием кодированной структуры. Спасибо! | ||||
Ответы: | ||||
| ||||
Как попадает ключ - см. мой последний ответ к http://www.cryptopro.ru/CryptoPro/forum/myforum.asp?q=1021 Но, при использовании этих функций, не нужно самостоятельно создавать и делать экспорт-импорт сессионного ключа. Пример шифрования - можно посмотреть в MSDN или в исходниках нашей тестовой программы csptest -http://www.cryptopro.ru/CryptoPro/test/sample2_0.zip | ||||
| ||||
Если я правильно понял сначала нужно сгенерировать ключ, поместить ключ и синхровектор в CRYPT_ALGORITHM_IDENTIFIER.Parameters. Заполнить остальные структуры для CryptEncryptMessage. Но как мне в параметр pbToBeEncrypted передать весь файл? И каким образом зашифруется сессионный ключ? Или может нужно использовать какие-то другие функции для создания PKCS#7 файла с зашифрованными данными в нутри? И подскажите пожалуйста имя файла в вашем примере, где есть пример создания PKCS#7? Спасибо. | ||||
| ||||
Пример можно посмотреть в файле cryptsf.c Для шифрования файла с помощью csptest-а: csptest -sfenc -encrypt -in text.txt -out text.enc -my "Мой сертификат" -cert "Другой сертификат" Здесь используются два сертификата - собственный, в котором Common Name = "Мой сертификат" и сертификат получателя , в котором Common Name = "Другой сертификат" | ||||
| ||||
Здравствуйте! В этом примере в вас шифруется сообщение из файла. Но мне не понятно как справиться с файлом большого размер? Ведь если повторять описанную вами процедуру в цикле пока не кончиться входной файл и записывать кодированные блоки в выходной файл, то в результате получиться ерудна, а не PKCS#7 Enveloped File. Как же мне быть? Заранее большое спасибо за любые пояснения! | ||||
| ||||
Для большого файла в том случае, если хотите шифровать кусками, то CryptEncryptMessage не годится. Придется использовать Low-level Message Functions - CryptMsgOpenToEncode и др. Пример есть в том же csptest-е в файле cryptlo.c. У нас есть пример использования потокового шифрования. Я вышлю Вам модифицированный вариант csptest-а. | ||||
| ||||
Доброе утро! спасибо за файл. в ближайшее время обязательно посмотрю. | ||||