一、由于项目需要,前端把密码用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
四、总结:如果有疑问可以直接留言评论,如果觉得对你有帮助,可以小小的赞赏一杯奶茶钱,谢谢!!

RSA解密失败:javax.crypto.BadPaddingException : Decryption error相关推荐

  1. RSA解密时javax.crypto.BadPaddingException: Data must start with zero

    解决方法:要在加密后产生的byte数组转成string时要在各byte之间加个标识符,我加了个空格, 然后再根据空格分隔转换回byte数组.如果不加标识符,由于byte值可能是一位到三位,无法知道某一 ...

  2. Linux下运行java DES解密失败,报javax.crypto.BadPaddingException:Given final block not properly padded

    参考:http://blog.csdn.net/rj042/article/details/8196125 单点登录:https://github.com/ebnew/ki4so redis客户端操作 ...

  3. 微信一键登录解密手机号出现javax.crypto.BadPaddingException: pad block corrupted错误

    <button class="weui-btn btn-login" open-type="getPhoneNumber" bindgetphonenum ...

  4. javax.crypto.BadPaddingException: Data must sta...

    为什么80%的码农都做不了架构师?>>>    错误:javax.crypto.BadPaddingException: Data must start with zero RSA是 ...

  5. exception javax.crypto.BadPaddingException: Given final block not properly padded

    exception javax.crypto.BadPaddingException: Given final block not properly padded CreationTime--2018 ...

  6. javax.crypto.BadPaddingException: Given final block not properly padded解决方案

    javax.crypto.BadPaddingException: Given final block not properly padded解决方案 参考文章: (1)javax.crypto.Ba ...

  7. javax.crypto.BadPaddingException: Given final block not properly padded 解决方法

    javax.crypto.BadPaddingException: Given final block not properly padded 解决方法 参考文章: (1)javax.crypto.B ...

  8. 小程序对encryptedData进行解密报错javax.crypto.BadPaddingException: pad block corrupted

    第一次写小程序登陆授权,踩了很多坑.什么用encryptedData.iv.code这些参数去登录,其实只要一个code就够了. 还有各种看不太明白的参数secret.authorization_co ...

  9. javax.crypto.BadPaddingException: Blocktype ...

    1.最近做RSA加密用于增强android客户机与服务器(JavaEE)数据传输的安全性.发现在andorid机器上生成的(密钥对由服务器在windows xp下生成并将公钥发给客户端保存)密码无法在 ...

最新文章

  1. 高级程序员到底高级在哪里?
  2. 一键分享(系统所有的软件的分享功能)
  3. flask-session总结
  4. 天联高级版客户端_金万维天联高级版服务器安装配置全流程以及客户端登录流程...
  5. 【强化学习】Policy Gradient原理
  6. Innodb ibdata数据文件误删,如何恢复
  7. Dubbo是如何进行远程服务调用的?(源码流程跟踪)
  8. Asp.net高效导出excel篇之Aspose导出excel
  9. JAVA的四则运算规则_java四则运算规则
  10. 从零实现深度学习框架——计算图运算补充
  11. 在计算机网络GAN代表什么,图解 生成对抗网络GAN 原理 超详解
  12. 焊接工时简便计算工具_焊接工时定额计算手册.doc
  13. 水经注叠加cad_相见恨晚的50个CAD技巧
  14. smarty下载及入门教程
  15. c语言生成正弦波,方波等mif
  16. 如何独立开发 APP 赚钱?
  17. Java Web 网络商城案例演示一、(环境搭建)
  18. #1文献学习总结---移动边缘计算
  19. RTMP视频推流功能组件EasyRTMP-HIK DEMO版本运行报错0xc000007b问题排查分析
  20. Hadoop(二)——HDFS的 I/O 流操作

热门文章

  1. 通过Android系统日志监听程序启动事件
  2. 用 navicat 导出设计表表结构
  3. 如何把pdf转换成excel转换器免费版
  4. python网络监控程序_python写的一个监控系统进程网络流量的程序
  5. 开心工作,开心生活!
  6. 2021年京东双11购物节如何买才能最优惠?京东双11优惠规则规则
  7. 冷补丁和热补丁的区别
  8. Node.js.不要堵塞线程(一)
  9. 笔记dng图片在premiere和ae中不一致
  10. Android用户头像上传