我是靠谱客的博主 斯文麦片,最近开发中收集的这篇文章主要介绍【Java】RSA使用16进制公钥加密问题,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

公司对接银行接口,加密部分采用银行提供的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进制公钥加密问题所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(54)

评论列表共有 0 条评论

立即
投稿
返回
顶部