如何使用rsa私钥与java生成签名?

时间:2015-06-22 04:48:42

标签: java soap cryptography rsa jks

我是用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);
请告诉我,我的错误在哪里?也许我喜欢上课,而且这段代码并不像我想的那样好。感谢。

1 个答案:

答案 0 :(得分:1)

不,仅仅生成PKCS#1签名是不够的。

PKCS#7指定Cryptographic Message Syntax (CMS)。这是一种容器格式,而不仅仅是签名。您需要CMS的实现来创建此类签名。包含CMS实现的知名库是Bouncy Castle

  

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

相关问题