Как зашифровать электронную почту с помощью случайного ключа с надувным замком

Я использую надувной замок для достижения SMIME (шифрование с открытым ключом). Чтобы отправить зашифрованное электронное письмо нескольким получателям, я выбрал этот метод

  1. Зашифруйте письмо случайным ключом

  2. Зашифруйте случайный ключ с помощью открытого ключа каждого получателя и установите его для сообщения MIME. Если в электронном письме есть три получателя, объект будет иметь три зашифрованных случайных ключа.

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

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

/* Create the encrypter */
SMIMEEnvelopedGenerator encrypter = new SMIMEEnvelopedGenerator();
encrypter.addKeyTransRecipient((X509Certificate) certChain[0]);

/* Encrypt the MimeMessage*/
MimeBodyPart encryptedPart = encrypter.generate(signedMessage,
SMIMEEnvelopedGenerator.RC2_CBC, "BC");

Может ли кто-нибудь отправить мне код для шифрования MimeMessage со случайным ключом в надувном замке?


person Nancy    schedule 24.09.2013    source источник


Ответы (1)


Готово. Решение довольно простое: просто добавьте все сертификаты получателей в надувной замок EnvelopedGenerator и зашифруйте.

/* Create the encrypter */
SMIMEEnvelopedGenerator encrypter = new SMIMEEnvelopedGenerator();
encrypter.addKeyTransRecipient((X509Certificate) recipient1Cert);
encrypter.addKeyTransRecipient((X509Certificate) recipient2Cert);

/* Encrypt the MimeMessage*/
MimeBodyPart encryptedPart = encrypter.generate(signedMessage,
SMIMEEnvelopedGenerator.RC2_CBC, "BC");

при расшифровке просто укажите сертификат получателя. Если это один из сертификатов шифрования, ваше сообщение будет успешно расшифровано.

person Nancy    schedule 09.10.2013