如何通过收件人证书加密电子邮件?

时间:2014-05-28 03:12:21

标签: java encryption javamail

我使用javamail-crypto-bouncycastle-smime库进行电子邮件数字签名和加密。

我已经检查了一些来自Internet的电子邮件加密示例,它们总是使用存储在密钥库中的公钥。但我需要使用存储在收件人证书中的公钥。

我知道如何从X.509证书获取公钥。

CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
FileInputStream fis = new FileInputStream(new File("certFile.cer")));
Certificate cert = cert = certFactory.generateCertificate(fis);
Key pKey = cert.getPublicKey();

我有一个javamail-crypto-bouncycastle-smime加密eamil消息的示例代码。

EncryptionUtils smimeUtils = EncryptionManager.getEncryptionUtils(EncryptionManager.SMIME);
char[] smimePw = new String(_smimePw).toCharArray();
EncryptionKeyManager smimeKeyMgr = smimeUtils.createKeyManager();
smimeKeyMgr.loadPublicKeystore(new FileInputStream(_filepk12), smimePw);
Key smimeKey = smimeKeyMgr.getPublicKey(_alias);
MimeMessage smimeEncryptedMsg = smimeUtils.encryptMessage(session, message, smimeKey);

问题是示例代码使用pk12公钥,但我所拥有的是不需要密码的X.509公钥。

如何通过收件人的X.509证书加密电子邮件?

0 个答案:

没有答案