2017-04-18 63 views
0

我使用Java和BouncyCastle来解密和验证p7m s/mime消息。当我选择解密邮件的私钥不匹配时,我会从Bouncy Castle收到错误,如“异常解包密钥”或“错误填充”。如何获取用于加密邮件的证书的序列号?

但是,如何输出用于加密邮件的证书的序列号?例如,客户看到他选择了一个旧的证书会很有帮助。

Windows提供控制台应用程序“certutil”以分析p7m流。序列号和发行人IST提到的有:

CMSG_KEY_TRANS_RECIPIENT(1) CERT_ID_ISSUER_SERIAL_NUMBER(1) Seriennummer: b33...

+0

请添加引发错误的代码 – Egl

+0

我认为这里的错误并不重要。我的问题是如何获取用于加密邮件的证书的序列号。 – Dan

回答

0

最后,我发现我自己:-)

有一类里面BouncyCastle的,它使您能够解析的ASN结构加密的消息。

ASN1InputStream bIn = new ASN1InputStream(message.getEncoded()); 
ASN1Primitive obj = bIn.readObject(); 
system.out.println(ASN1Dump.dumpAsString(obj)); 

此外,证书的序列号在里面。所以我跳到源代码并复制了我需要的部分,以便检测它并将其存储在全局变量中。