报错问题解决办法: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);
    }
相关推荐
计算机毕设指导66 分钟前
基于微信小程序的丽江市旅游分享系统【源码文末联系】
java·spring boot·微信小程序·小程序·tomcat·maven·旅游
毕设源码-郭学长6 分钟前
【开题答辩全过程】以 基于python电商商城系统为例,包含答辩的问题和答案
开发语言·python
散峰而望9 分钟前
【算法竞赛】栈和 stack
开发语言·数据结构·c++·算法·leetcode·github·推荐算法
Mr -老鬼10 分钟前
Rust 的优雅和其他语言的不同之处
java·开发语言·rust
网安CILLE12 分钟前
PHP四大输出语句
linux·开发语言·python·web安全·网络安全·系统安全·php
weixin_5316518114 分钟前
Rust 的所有权机制
java·开发语言·rust
江公望18 分钟前
QT/QML qmlRegisterType()函数浅谈
开发语言·qt
foundbug99919 分钟前
MATLAB中实现信号迭代解卷积功能
开发语言·深度学习·matlab
Seven9726 分钟前
SPI机制:服务扩展的核心技术
java