java签名和验签问题
String sign="dfgfgh";
X509Certificate x509Certificate = (X509Certificate) CAUtil.getCfeformPfx("d:/TestingUser1_sign.pfx", "12345678"); //工具类根据PFX文件得到Certificate对象再强转
Signature signature = Signature.getInstance(x509Certificate.getSigAlgName());
PrivateKey privateKey=CAUtil.GetPvkformPfx("d:/TestingUser1_sign.pfx", "12345678");//工具类根据PFX文件得到私钥
signature.initSign(privateKey);
signature.update(sign.getBytes());
byte[] data=signature.sign(); //签名
X509Certificate cf = (X509Certificate) CAUtil.getX509Certificate("d:/TestingUser1_sign_pub.cer"); //工具类
// 由证书构建签名
Signature s = Signature.getInstance(cf.getSigAlgName());
// 由证书初始化签名,实际上是使用了证书中的公钥
s.initVerify(cf);
s.update(data);
System.out.println( s.verify(sign.getBytes()));
得到的结果却是是FALSE 不知道错在哪里,请各位大大指证.TestingUser1_sign_pub.cer为TestingUser1_sign.pfx的公钥证书
X509Certificate x509Certificate = (X509Certificate) CAUtil.getCfeformPfx("d:/TestingUser1_sign.pfx", "12345678"); //工具类根据PFX文件得到Certificate对象再强转
Signature signature = Signature.getInstance(x509Certificate.getSigAlgName());
PrivateKey privateKey=CAUtil.GetPvkformPfx("d:/TestingUser1_sign.pfx", "12345678");//工具类根据PFX文件得到私钥
signature.initSign(privateKey);
signature.update(sign.getBytes());
byte[] data=signature.sign(); //签名
X509Certificate cf = (X509Certificate) CAUtil.getX509Certificate("d:/TestingUser1_sign_pub.cer"); //工具类
// 由证书构建签名
Signature s = Signature.getInstance(cf.getSigAlgName());
// 由证书初始化签名,实际上是使用了证书中的公钥
s.initVerify(cf);
s.update(data);
System.out.println( s.verify(sign.getBytes()));
得到的结果却是是FALSE 不知道错在哪里,请各位大大指证.TestingUser1_sign_pub.cer为TestingUser1_sign.pfx的公钥证书
...全文
相关推荐
java软加签验签(二代银行系统)
java软加签验签(二代银行系统),不买签名服务器,节省点钱,但是也多点风险。
C#验签,java加签
对java签名数据进行验签,可以直接使用。注释写的很详细。
C#与java平台RSA加密解密签名验签互通案例
C#与java平台RSA加密解密签名验签互通案例,解决RSA在C#与java加密算法不同导致验签不过情况
解决java和net之间SHA256withRSA签名问题
完美解决java和net之前签名和验签问题--
使用.net2.0 的 MD5加密/SM3加密/RSA加密/RSA签名, 用 java解密或签名验签代码
使用.net2.0 的 MD5加密/SM3加密/RSA加密/RSA签名, 用 java解密或签名验签代码


Java SE
