2013-09-24 50 views
1

我正在使用充氣城堡來實現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嗎?

回答

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"); 

解密時只提供收件人證書。如果它是加密證書之一,您的消息將被成功解密。