最近几天一直在做单点登录加密串的解密,碰到了一些问题,将这些问题分享下。
首先加密解密需要用到jce_policy-1_5_0.zip,下载地址:http://cds.sun.com/is-bin/INTERSHOP.enfinity/WFS/CDS-CDS_Developer-Site/en_US/-/USD/VerifyItem-Start/jce_policy-1_5_0.zip?BundledLineItemUUID=PdKJ_hCvc84AAAEq2HgdNaQ9&OrderID=UVSJ_hCvhXQAAAEqyXgdNaQ9&ProductID=NVXACUFBETQAAAEY68A5AXuH&FileName=/jce_policy-1_5_0.zip 然后将jce_policy-1_5_0.zip 中的 jar 包替换 %JAVA_HOME%/jre/lib/security 目录下的相关文件
相关代码
从网上找到了好多RSA-SHA1读取证书密钥签名的代码,大部分都是相同的,都不是很好用。 读取 PKCS12证书(.pfx)所需要的第三方包bcprov-jdk15-145.jar 地址 :http://www.bouncycastle.org/download/bcprov-jdk15-145.jar ,将jar包放到%JAVA_HOME%/jre/lib/ext下,在java.security添加下列文字:
security.provider.7=org.bouncycastle.jce.provider.BouncyCastleProvider
这样就可以读取证书文件,获取私钥签名了。
私钥签名相关代码
在keyStore.getKey获取PricateKey对象是要知道证书的别名,获取别名可以参考下面链接
http://snowolf.javaeye.com/blog/735294
公钥签名验证代码
注意:如果证书是2048bit,那么签名获取的256位的byte数组,1024bit对应的128位byte数组