簡體   English   中英

如何使用Java的RSA私鑰更正生成簽名?

[英]How to correct generate signature using rsa private key with java?

我是Java加密領域的新手,我有一個簡單的問題。 我有帶有SHA1withRSA可信私鑰和證書的JKS密鑰庫,我需要為SOAP消息生成PKCS#7簽名。 我試圖找到有關此的一些信息,此刻,我有:

KeyStore ks = KeyStore.getInstance("JKS");
ks.load(...);//load ks from ks path
//initiate signature(if I do it - Web-Service send me exception:Error while 
//ASN.1-decoding PKCS#7 message
RSAPrivateKey = (RSAPrivateKey) ks.getKey(...);
Signature sign = Signature.getInstance("SHA1WithRSA);
sign.initSign(privatKey);
sign.update(data)//data - final byte[] data - method argument
byte[] bb = sign.sign();
BASE64Encoder enc = new BASE64Encoder();
return encoder.encode(bb);

請告訴我,我的錯誤在哪里? 也許我跳過了需要的類,但是這段代碼並沒有像我想要的那樣好用。 謝謝。

不,僅生成PKCS#1簽名是不夠的。

PKCS#7指定加密消息語法(CMS) 這是一種容器格式,而不僅僅是簽名。 您需要實現CMS才能創建此類簽名。 包含CMS實現的著名庫是Bouncy Castle

S / MIME和CMS(PKCS7 / RFC 3852)的生成器/處理器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM