| ||||
| ||||
Как корректно и правильно зашифровать для нескольких получателей сообщение с помощью функции CryptEncryptMessage? Вроде бы как на вход подается массив с сертификатами получателей, но что в конечном итоге получается и как обрабатывать массив не ясно. Может кто сталкивался с таким шифрованием. Заранее благодарен за любую информацию. | ||||
Ответы: | ||||
| ||||
Все надо делать именно так как Вы написали. Массив достаточно только подать на вход, больше ничего делать не надо, функция все сделает сама. На выходе получится зашифрованное сообщение, которое можно расшифровать CryptDecryptMessage например. | ||||
| ||||
А можно чуть подробней что получается на выходе? При шифровании шаги такие: 1. указываем получателей сообщения (массив сертификатов) 2. инициализация Crypt_Encrypt_Message_para и алгоритма шифрования. 3. вызов CryptEncryptMessage для определения длины шифрованных данных 4. ----//----- для шифрования Получается, первоначальное сообщение зашифровано в выходном блобе, но на каком из ключей массива если их несколько? Или какой то из этапов шифрования необходимо обрабатывать в цикле? | ||||
| ||||
Зашифровано на всех сразу. Идея такая - в сертификате содержится открытый ключ асимметричной ключевой пары, само же сообщение шифруется на симметричном ключе, который генерится в процессе шифрования. Потом этот ключ уже шифруется с помощью открытого ключа получателя (или получателей). В итоге, в выходном блобе содержится сообщение, зашифрованное общим симметричным ключем и несколько копий симметричных ключей, зашифрованных отдельно для каждого получателя. Причем для каждого зашифрованного ключа указан идентификатор сертификата получателя. | ||||
| ||||
Таким образом, при расшифровании функцией CryptDecryptMessage в качестве ключей расшифрования можно указать не все ключи, а только, например, какой-либо один или несколько из числа тех на которых сообщение было зашифровано? Спасибо за предыдущий ответ. Спасибо за ответ. | ||||
| ||||
Не совсем так. При расшифровании CryptDecryptMessage указывается хранилище, где надо искать сертификаты получателей. | ||||