公司对接银行接口,加密部分采用银行提供的jar包,其中加密方法是RSA,公私钥是16进制,公钥加密私钥解密;结果加密之后解密失败,经过一番测试发现银行jar包代码有问题。
16进制密钥加解密可参考这位博主写的文章,很详细:
RSA 16进制加解密和签名_Braveyzx的博客-CSDN博客_16进制密文
16进制RSA加解密提取公钥有不同的方法,方法一核心代码如下:
复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13RSAPublicKeySpec 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(); }
用上面的方法提取公钥进行加密,则解密失败,后面替换成了别的公钥提取方法(前文链接中的就可以),测试后解密成功。
公钥提取示例
复制代码
1
2
3
4byte[] keyBytes = hexStrToBytes(pubKey); KeyFactory keyFactory = KeyFactory.getInstance("RSA"); X509EncodedKeySpec keySpec = new X509EncodedKeySpec(keyBytes); publicKey = keyFactory.generatePublic(keySpec);
最后
以上就是斯文麦片最近收集整理的关于【Java】RSA使用16进制公钥加密问题的全部内容,更多相关【Java】RSA使用16进制公钥加密问题内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复