RSA解密失败:javax.crypto.BadPaddingException : Decryption error

39 篇文章 0 订阅
一、由于项目需要,前端把密码用RSA加密后传输到后端,后端进行RSA解密后再与数据库中的密码进行对比,接受到前端传过来的加密后的密码,在进行解密的时候出现错误了:
javax.crypto.BadPaddingException : Decryption error
二、仔细对比了前后端的RSA加密解密的设置,发现是一样的,本来以为是公钥和私钥的问题,换了不少公钥私钥之后还是有问题。然后无意中发现前端传过来的加密后的字符串和后端使用RSA加密后的字符串不一样。详细对比后,发现是字符串中的加号+变成了空白字符。

前端传过来的加密后的字符串:

Af2bSRu1enQBB2yzOVUEm/ImxycRleTrk4LJnc5OLgHawjFJevVdao44neAi9NhPLSqKDftRI1YZBbPL25pAdA72hykaroR7P/6o0yQ7mPguQPNsIBClLHBo5 w10ojajB3bYG68kvDoVJqsMrss wRkFjktZRssJw7M80Uxw0s=

后端使用RSA加密后的字符串:

Af2bSRu1enQBB2yzOVUEm/ImxycRleTrk4LJnc5OLgHawjFJevVdao44neAi9NhPLSqKDftRI1YZBbPL25pAdA72hykaroR7P/6o0yQ7mPguQPNsIBClLHBo5+w10ojajB3bYG68kvDoVJqsMrss+wRkFjktZRssJw7M80Uxw0s=

对比结果:
在这里插入图片描述

三、在接收到加密后的字符串之后,先进行了替换,把空格替换成加号,然后就可以了。加密后的字符串的一些特殊的字符的含义:
    • URL 中+号表示空格 %2B
  1. 空格URL中的空格可以用+号或者编码 %20
  2. / 分隔目录和子目录 %2F
  3. ? 分隔实际的 URL 和参数 %3F
  4. % 指定特殊字符 %25
  5. #表示书签 %23
  6. & URL 中指定的参数间的分隔符 %26
  7. = URL 中指定参数的值 %3D

还有其他的方法可以避免出现这个问题的,详情可以参考文章:

  1. javax.crypto.BadPaddingException : Decryption error
  2. RSA解密报 Decryption error
四、总结:如果有疑问可以直接留言评论,如果觉得对你有帮助,可以小小的赞赏一杯奶茶钱,谢谢!!

在这里插入图片描述

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值