Java 如何按收件人加密电子邮件';什么证书?

Java 如何按收件人加密电子邮件';什么证书?,java,encryption,jakarta-mail,Java,Encryption,Jakarta Mail,我正在使用javamail crypto-bouncycastle-smime库进行电子邮件数字签名和加密 我检查了一些来自Internet的电子邮件加密示例,它们总是使用存储在密钥库中的公钥。但我需要使用存储在收件人证书中的公钥 CertificateFactory certFactory = CertificateFactory.getInstance("X.509"); FileInputStream fis = new FileInputStream(new File("certFile

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

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

CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
FileInputStream fis = new FileInputStream(new File("certFile.cer")));
Certificate cert = cert = certFactory.generateCertificate(fis);
Key pKey = cert.getPublicKey();
我知道如何从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证书对电子邮件进行加密?

请尽量不要在一篇文章中问多个问题。您的主要问题是什么?从X.509证书获取公钥?对不起,我的错。我已经编辑了这个问题。