15.07.2004 13:38:33CAPICOM: EnvelopedData - не использует внешний публичный ключь? Ответов: 4
Владимир Ворническу
Привет Всем!
Хочу уточнить одну деталь, я шифрую текст ф-ей EnvelopedData.Encrypt загружая предварительно pfx. Потом я хочу расшифровать зашифрованное загрузив *.CER - т.е. публичный ключ. Однако я получаю исключение что сертификат не найден, пошарил по форумам и нашёл что сертификат толжен быть импортирован в хранилище системы, иначе никак.
Вопрос. Это верное утверждение, мне что то не верится...

С Уважением, VVA
 
Ответы:
15.07.2004 15:32:36Kirill Sobolev
Вкратце : для шифрования нужен открытый ключ получателя. Для расшифровки - его секретный. Т.е. в его адрес зашифровать может кто угодно, а расшифровать может только он сам.
15.07.2004 22:14:36Владимир Волническу
Я счтал что наоборот, шифрование происходит по секретному ключу а расшифровка по публичному, что собственно и подтверждают эксперименты. На при шифровании я указал контейнер pfx (там всё), при расшифровывании я импортировал *.cer т.е. сертификат с открытым ключом. Расшиврование при этом состоялось успешно. Затем я удалил этот сертификат из системы и как положено получил ошибку.
Как тогда обьяснить это?

C Уважением, VVA
16.07.2004 10:43:35Kirill Sobolev
Из MSDN
EnvelopedData.Encrypt :
The Encrypt method generates a session key, uses that key to encrypt the contents, envelops the encrypted content for each recipient by encrypting the session key with each recipient’s public key, and then returns the BLOB that contains the encrypted contents and the encrypted session keys as an encoded string.

EnvelopedData.Decrypt :
The Decrypt method decrypts enveloped content. Decryption is done if the recipient of the message has access to the private key paired with one of the public keys used to envelop the message.

Как видите, требования совершенно однозначные. А как Вы импортировали этот сертификат, чтобы расшифровывать? Просто каким-то образом у Вас был доступ к секретному ключу, чудес не бывает :)
16.07.2004 13:53:43Владимир Ворническу
>Как видите, требования совершенно однозначные.
RTFM типа... :-)
>А как Вы импортировали этот сертификат, чтобы расшифровывать?
обыкновенным образом: rundll32.exe cryptext.dll,CryptExtAddCER my.cer

>Просто каким-то образом у Вас был доступ к секретному ключу, чудес не бывает :)
Вот и мне любопытно что приисходит?

PS Сертификат создавал скриптом по xEnroll, после подписания его в СА импортировал а хранилище My. Затем, уже экспортировал всё (галочка на удаление приватного ключа) в pfx. Вот и вся кухня.

PSS У вас есть ICQ? ...а то уж больно долго решать такие вопросы. Мой #58081880

С Уважением, VVA