2017-04-18 17 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)); 

此外,證書的序列號在裏面。所以我跳到源代碼並複製了我需要的部分,以便檢測它並將其存儲在全局變量中。