报错问题解决办法: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);
    }
相关推荐
P.H. Infinity35 分钟前
【RabbitMQ】04-发送者可靠性
java·rabbitmq·java-rabbitmq
生命几十年3万天39 分钟前
java的threadlocal为何内存泄漏
java
caridle1 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
萧鼎1 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
学地理的小胖砸1 小时前
【一些关于Python的信息和帮助】
开发语言·python
疯一样的码农1 小时前
Python 继承、多态、封装、抽象
开发语言·python
^velpro^1 小时前
数据库连接池的创建
java·开发语言·数据库
苹果醋31 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
秋の花1 小时前
【JAVA基础】Java集合基础
java·开发语言·windows
小松学前端1 小时前
第六章 7.0 LinkList
java·开发语言·网络