报错问题解决办法: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);
    }
相关推荐
KuaCpp15 分钟前
C++面向对象(速过复习版)
开发语言·c++
wbs_scy22 分钟前
Linux线程同步与互斥(三):线程同步深度解析之POSIX 信号量与环形队列生产者消费者模型,从原理到源码彻底吃透
java·开发语言
2zcode34 分钟前
基于MATLAB元胞自动机(CA)的AZ80A镁合金动态再结晶(DRX)过程模拟
开发语言·matlab·动态再结晶
iCxhust1 小时前
微机原理实践教程(C语言篇)---A001闪烁灯
c语言·开发语言·汇编·单片机·嵌入式硬件·51单片机·微机原理
MATLAB代码顾问2 小时前
Python实现蜂群算法优化TSP问题
开发语言·python·算法
jinanwuhuaguo2 小时前
(第三十三篇)五月的文明奠基:OpenClaw 2026.5.2版本的文明级解读
android·java·开发语言·人工智能·github·拓扑学·openclaw
xmjd msup2 小时前
spring security 超详细使用教程(接入springboot、前后端分离)
java·spring boot·spring
952363 小时前
SpringBoot统一功能处理
java·spring boot·后端
有一个好名字3 小时前
工具即双手 —— 从 Bash 到 Tool Dispatch Map
开发语言·chrome·bash
Lyyaoo.3 小时前
优惠券秒杀业务分析
java·开发语言