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