【发布时间】:2017-10-29 13:36:05
【问题描述】:
public static String decrypt(byte[] text, PrivateKey key) {
byte[] decryptedText = null;
try {
final Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.DECRYPT_MODE, key);
decryptedText = cipher.doFinal(text);
} catch (Exception e) {
e.printStackTrace();
}
return new String(decryptedText);
}
有我的代码,由于某种原因,我收到此错误,我认为这与使用 Cipher 类的默认构造函数有关。
为什么会出现这个错误?
【问题讨论】:
-
BadPaddingException 通常表示密码错误。
-
@dpr “密码错误”是什么意思?我正在为一个学校项目尝试一些套接字、服务器-> 客户端消息传递加密。
-
“我认为这与使用 Cipher 类的默认构造函数有关。” 你 不要'不使用任何构造函数,尤其是不使用默认构造函数(该类无论如何都没有)。
-
这个问题中缺少大量可能相关的信息。您如何对其进行加密,如何对加密结果进行编码和传输,在尝试解密之前如何接收和解码?
Cipher.getInstance("RSA");使用平台默认值,这是错误的常见来源。所以这就引出了加密平台是否不同于解密平台的问题。与new String(decryptedText);相同 -
欢迎来到 Stack Overflow!填充错误可能意味着很多事情:错误的密钥、错误的编码、不完整/过满的密文。您应该显示加密代码并给出您使用的示例值。否则,很容易猜测此代码(或加密代码)可能有什么问题。总之,请创建一个Minimal, Complete, and Verifiable example。
标签: java encryption rsa badpaddingexception