Bouncycastle: шифрование открытым ключом

Мне нужна помощь с этим lib. Fetching the following examples code BouncyCastle and I do not understand how this works.
Мой код: http://pastebin.com/RieDfUd9
Словарь: chain[0], is sender cert.
conv, является получателем сертификата.

Моя проблема заключается в том, что мне нужно зашифровать письмо с помощью smime с персоналом открытого ключа, которому я отправляю письмо. На данный момент в тестовой среде у меня есть доступ к обоим сертификатам. Но в производственной среде у меня будет только доступ к цепочке сертификатов (кто отправляет) [0] и открытый ключ тех, кто получает. Мне нужно encryptar электронной почты, так что я могу открыть с открытым ключом, кто читает (и который был использован для шифрования сообщения).

Я уже пробовал несколько способов, но у меня всегда возникают проблемы при расшифровке.

1 ответ

  1. Вы не можете этого сделать. Вам придется хранить сертификат, а не только открытые ключи.

    Когда почтовый клиент получает письмо, он должен знать, какой закрытый ключ использовать для его расшифровки — или он просто не сможет расшифровать.

    Как почтовый клиент узнает, какой закрытый ключ использовать? Поскольку информация о получателе также находится в зашифрованной почте.

    Вы не можете просто зашифровать ваш ключ шифрования данных с любым случайным открытым ключом и надеяться, что получатель знает, какой ключ может быть использован для его расшифровки.

    Именно поэтому API BouncyCastle принимает сертификат вместо ключа.

    Подробнее о шифровании SMIME можно прочитать здесь:
    https://security.stackexchange.com/questions/45222/smime-email-decryption-key-with-openssl

    Эта ссылка содержит дополнительные сведения о том, как выполняется расшифровка для нескольких получателей:
    Расшифровка SMIME для нескольких получателей