报错问题解决办法:Decryption error sun.security.rsa.RSAPadding.unpadV15

报错问题解决办法:Decryption error sun.security.rsa.RSAPadding.unpadV15

出现的问题

java 复制代码
javax.crypto.BadPaddingException: Decryption error
    at sun.security.rsa.RSAPadding.unpadV15(RSAPadding.java:380) ~[na:1.8.0_131]
    at sun.security.rsa.RSAPadding.unpad(RSAPadding.java:291) ~[na:1.8.0_131]
    at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:356) ~[sunjce_provider.jar:1.8.0_112]
    at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:389) ~[sunjce_provider.jar:1.8.0_112]
    at javax.crypto.Cipher.doFinal(Cipher.java:2048) ~[na:1.8.0_121]

解决办法:

采用相同提供者组件

com.sun.crypto.provider.SunJCE

java 复制代码
SunJCE provider=new com.sun.crypto.provider.SunJCE();
Security.addProvider(provider);
Cipher cipher = Cipher.getInstance(keyFactory.getAlgorithm(),provider);
java 复制代码
//必须自己生成下面两个密钥
    private static final String PUBLIC_KEY = "自己生成公钥";
    private static final String PRIVATE_KEY="自己生成私钥";
    //

调用方法:

java 复制代码
String pwd = RsaUtil.DecryptByPrivateKey(pwd_web);
String web=RsaUtil.encryptByPublicKey(pwd);
String pwd2 = RsaUtil.DecryptByPrivateKey(web);

执行的两个方法代码:

java 复制代码
//加密-公 OK
    public static String encryptByPublicKey(String data)
    {
        String r="";
        try {
            byte[] itemResultBytes = encryptByPublicKey(data, PUBLIC_KEY);
            r= Base64.encode(itemResultBytes);
        } catch (Exception e) {
            e.printStackTrace();
            System.err.println("encryptByPublicKey加密出错:" + e.getMessage() + ":" + "加密内容:" + data);
            throw new RuntimeException("rsa加密失败");
        }
        return r;
    }

    //解密-私    OK
    public static String DecryptByPrivateKey(String content)
    {
        return jsencryptDecryptByPrivateKeyLong(content,PRIVATE_KEY);
    }
相关推荐
程序员小假18 小时前
SQL 语句左连接右连接内连接如何使用,区别是什么?
java·后端
怕什么真理无穷18 小时前
C++_面试题_21_字符串操作
java·开发语言·c++
Lxinccode18 小时前
docker(25) : 银河麒麟 V10离线安装docker
java·docker·eureka·银河麒麟安装docker·银河麒麟安装compose
遇见火星18 小时前
LINUX的 jq命令行处理json字段指南
java·linux·json·jq
yi碗汤园18 小时前
【一文了解】C#反射
开发语言·unity·c#
高山上有一只小老虎19 小时前
等差数列前n项的和
java·算法
rockmelodies19 小时前
东方通安装
java
小羊失眠啦.19 小时前
用 Rust 实现高性能并发下载器:从原理到实战
开发语言·后端·rust
避避风港19 小时前
Java 抽象类
java·开发语言·python
初学小白...19 小时前
JVM入门知识点
java·服务器·jvm