概述
公司对接银行接口,加密部分采用银行提供的jar包,其中加密方法是RSA,公私钥是16进制,公钥加密私钥解密;结果加密之后解密失败,经过一番测试发现银行jar包代码有问题。
16进制密钥加解密可参考这位博主写的文章,很详细:
RSA 16进制加解密和签名_Braveyzx的博客-CSDN博客_16进制密文
16进制RSA加解密提取公钥有不同的方法,方法一核心代码如下:
RSAPublicKeySpec keySpec = null;
PublicKey publicKey = null;
BigInteger big = new BigInteger(pubKey, 16);
try
{
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
keySpec = new RSAPublicKeySpec(big, new BigInteger("10001", 16));
publicKey = keyFactory.generatePublic(keySpec);
}
catch (NoSuchAlgorithmException e)
{
e.printStackTrace();
}
用上面的方法提取公钥进行加密,则解密失败,后面替换成了别的公钥提取方法(前文链接中的就可以),测试后解密成功。
公钥提取示例
byte[] keyBytes = hexStrToBytes(pubKey);
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes);
publicKey = keyFactory.generatePublic(keySpec);
最后
以上就是斯文麦片为你收集整理的【Java】RSA使用16进制公钥加密问题的全部内容,希望文章能够帮你解决【Java】RSA使用16进制公钥加密问题所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复