繁体   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