10.05.2007 10:00:26Шифрование для нескольких получателей Ответов: 8
Максим
Здравствуйте!

В CAPICOM есть такая штука как шифрование для множества получателей.
Хотелось бы реализовать подобное на CryptoApi (пишу класс на C#).
Правильно ли я понимаю что, для нескольких получателей производится шифрование на одном сессионном ключе (генерируется через CryptGenKey), затем этот сессионный ключ шифруется ключем согласования для каждого получателя
и полученные несколько зашифрованных ключей добавляются к зашифрованному сообщению. Так ли это?
 
Ответы:
10.05.2007 11:41:17Kirill Sobolev
Именно так.
10.05.2007 11:48:42Максим
Спасибо, значит так и сделаю!
10.05.2007 13:42:26Kirill Sobolev
Только в CryptoAPI это уже реализовано :) CryptEncryptMessage.
10.05.2007 14:50:29Максим
Может я и зря это, но пользую более низкоуровневую CryptEncrypt.
10.05.2007 16:09:03Kirill Sobolev
Зря.
Помимо возни с ключами Вам еще придется и зашифрованное сообщение вручную собирать.
10.05.2007 16:18:10Максим
Да, с этим согласен. Насколько я понял, ГОСТ-шифрование не увеличивает размез сообщения. Для передачи кодирую шифрованное сообщие в Base64, размер увеличивается ~30% - что в моем случае вполне приемлемо.

CryptEncryptMessage еще не пробывал. Не производит ли она какие дополнительные перекодировки/преобразования и не подключает ли к зашифрованному сообщению какие-либо дополнительные/избыточные данные? Насколько шифрованное CryptEncryptMessage сообщение станет больше исходного?
10.05.2007 17:59:48Kirill Sobolev
Нет, не производит. Собственно само шифрование происходит с помощью той же низкоуровневой CryptEncrypt + CryptEncryptMessage добавляет информацию, необходимую для расшифрования (получатель, параметры алгоритма, параметры ключа и т.д.). Размер этой информации постоянен и никак от исходного сообщения не зависит.
10.05.2007 18:04:39Максим
Спасибо, Кирилл! Воспользуюсь.