15.02.2007 14:58:10массовое шифрование Ответов: 5
Александр
Как корректно и правильно зашифровать для нескольких получателей сообщение с помощью функции CryptEncryptMessage?
Вроде бы как на вход подается массив с сертификатами получателей, но что в конечном итоге получается и как обрабатывать массив не ясно. Может кто сталкивался с таким шифрованием.
Заранее благодарен за любую информацию.
 
Ответы:
15.02.2007 15:35:47Kirill Sobolev
Все надо делать именно так как Вы написали. Массив достаточно только подать на вход, больше ничего делать не надо, функция все сделает сама. На выходе получится зашифрованное сообщение, которое можно расшифровать CryptDecryptMessage например.
16.02.2007 7:32:51Александр
А можно чуть подробней что получается на выходе?
При шифровании шаги такие:
1. указываем получателей сообщения (массив сертификатов)
2. инициализация Crypt_Encrypt_Message_para и алгоритма шифрования.
3. вызов CryptEncryptMessage для определения длины шифрованных данных
4. ----//----- для шифрования
Получается, первоначальное сообщение зашифровано в выходном блобе, но на каком из ключей массива если их несколько? Или какой то из этапов шифрования необходимо обрабатывать в цикле?

16.02.2007 10:41:24Kirill Sobolev
Зашифровано на всех сразу.
Идея такая - в сертификате содержится открытый ключ асимметричной ключевой пары, само же сообщение шифруется на симметричном ключе, который генерится в процессе шифрования. Потом этот ключ уже шифруется с помощью открытого ключа получателя (или получателей). В итоге, в выходном блобе содержится сообщение, зашифрованное общим симметричным ключем и несколько копий симметричных ключей, зашифрованных отдельно для каждого получателя. Причем для каждого зашифрованного ключа указан идентификатор сертификата получателя.
16.02.2007 11:58:03Александр
Таким образом, при расшифровании функцией CryptDecryptMessage в качестве ключей расшифрования можно указать не все ключи, а только, например, какой-либо один или несколько из числа тех на которых сообщение было зашифровано?

Спасибо за предыдущий ответ.

Спасибо за ответ.
16.02.2007 13:36:02Kirill Sobolev
Не совсем так. При расшифровании CryptDecryptMessage указывается хранилище, где надо искать сертификаты получателей.