Java安全架构____RSA加密配置第三方加密库问题_javax.crypto.BadPaddingException: Decryption error
来源:互联网 发布:问卷星软件下载 编辑:程序博客网 时间:2024/05/22 13:39
刚要写一个JCE组件是未使用第三方加密库时 bug如下
javax.crypto.BadPaddingException: Decryption error
at sun.security.rsa.RSAPadding.unpadV15(Unknown Source)
at sun.security.rsa.RSAPadding.unpad(Unknown Source)
at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:358)
at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:391)
at javax.crypto.Cipher.doFinal(Cipher.java:2189)
at RSAUtil.PubDecode(RSAUtil.java:182)
at sun.security.rsa.RSAPadding.unpad(Unknown Source)
at com.sun.crypto.provider.RSACipher.doFinal(RSACipher.java:358)
at com.sun.crypto.provider.RSACipher.engineDoFinal(RSACipher.java:391)
at javax.crypto.Cipher.doFinal(Cipher.java:2189)
at RSAUtil.PubDecode(RSAUtil.java:182)
at RSAUtil.main(RSAUtil.java:209)
在网上找到大致的原因摘如下:
关于javax.crypto.BadPaddingException: Blocktype异常的几种解决办法
1.异常描述:最近做项目为了增强数据传输的安全性用到了RSA加密。即客户端将要传送的信息,用私钥通过RSA非对称加密算法加密后,传到服务器端(PC端)。服务器端用对应(密钥)的公钥来解密时解密失败,抛出“javax.crypto.BadPaddingException: Blocktype”异常。
2.异常原因:SUN标准JDK是有所区别的,其中他们默认的RSA实现就不同。即服务端用Cipher.getInstance("RSA")方法进行加密时,使用的provider是Bouncycastle Security provider,Bouncycastle Security provider默认实现的是“RSA/None/NoPadding”算法,而客户端用Cipher.getInstance("RSA")进行解密时,使用的是Sun的security provider,实现的是“RSA/None/PKCS1Padding”算法,所以,解密时会失败。
解决方案:
第一种:将Cipher.getInstance("RSA")方法改为Cipher.getInstance("RSA/ECB/NoPadding")。但这种改法有一个缺点就是解密后的明文比加密之前多了很多空格。(空格的长度个数+原来的明文字符数=产生密钥时采用的bit数/8)
第二种:将Cipher.getInstance("RSA")方法改为Cipher.getInstance("RSA/None/PKCS1Padding")。这种方法解密后的明文和加密前的明文是对应的,不会出现第一种方法中的现象,推荐这种方法。
第三种:秘钥初始化时加入制定默认的jce算法
转自 http://blog.csdn.net/qq827245563/article/details/71747689
- Java安全架构____RSA加密配置第三方加密库问题_javax.crypto.BadPaddingException: Decryption error
- Java安全架构____RSA加密配置第三方加密库问题_javax.crypto.BadPaddingException: Decryption error
- Java安全架构____RSA加密
- java安全架构____RSA加密原理(1)
- java安全架构____RSA加密原理(2)
- java安全架构____RSA加密解密
- 使用Java 对称加密(AES),提示"javax.crypto.BadPaddingException: Given final block not properly padded"
- Android RSA 加密出现Decryption error
- C++加密库 Crypto++
- crypto加密
- crypto 加密
- RSA 加密解密 关于javax.crypto.BadPaddingException: Blocktype错误的几种解决方法
- javax.crypto.BadPaddingException: Blocktype mismatch: 0 RSA加密,Android到服务器解密报错
- BlackBerry平台加密安全机制(Crypto API)
- Android 代码混淆、第三方平台安全加密、渠道分发!
- JavaScript加密库 Crypto-JS
- JavaScript 加密库Crypto-JS
- js 加密库crypto-js
- Qt学习:QLabel的用法及其程序示例
- github的使用及在vscode中的使用
- 搜索引擎为什么不收录原创文章
- Everything up-to-date
- 堆--学习记录
- Java安全架构____RSA加密配置第三方加密库问题_javax.crypto.BadPaddingException: Decryption error
- OPENCV中的数据结构总结
- zookeeper代码阅读-连接控制
- HDU
- Win7 32位系统下Sublime text 3的安装以及配置C/C++、java、python的开发环境方法
- 模板:快速排列组合
- 基于状态机实现的注释转换(上次有些情况没考虑,这次是正确的情况)
- CSDN第一天
- 欢迎使用CSDN-markdown编辑器