java - 使用 des ede、javax.crypto.badpaddingexception 的解密错误

标签 java encryption cryptography padding des

我的代码中存在一个错误,它无法让我正确解密! 我只将八个字节的数据传递给 dataBytes 并且我正在传递 keyBytes 的 24 字节 key 。 我试图将解密的数据作为字节数组返回。 我不断收到错误的填充异常。

谢谢!

这是代码片段:

private static byte[] DESEdeDecrypt(byte[] keyBytes, byte[] dataBytes){

    byte[] decryptedData = null;
    try{
        DESedeKeySpec keySpec = new DESedeKeySpec(keyBytes, 0); 
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DESede");
        SecretKey key = keyFactory.generateSecret(keySpec); 
        Cipher cipher = Cipher.getInstance("DESede");
        cipher.init(Cipher.DECRYPT_MODE, key);
        decryptedData = cipher.doFinal(dataBytes);
    }
    catch(Exception e){System.out.println(e);}  

    return decryptedData;

最佳答案

您必须使用与加密相同的填充来解密。最好明确地设置它而不是依赖默认值。最好也指定两端的模式:

Cipher cipher = Cipher.getInstance("DESede/CBC/PKCS5Padding");

DESede 速度慢且过时。除了与旧代码兼容之外,您不应该使用它。对于新工作,最好使用 AES。

关于java - 使用 des ede、javax.crypto.badpaddingexception 的解密错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6846859/

相关文章:

java - 返回 List<WebElements> 周围的代理

java - 找到第一个匹配的条目并将匹配的条目值分配给变量

c# - 使用 RSA 编码字符串

Java用密码加密文件

java - 使用 Java 解密使用 Objective-C 加密的 AES 数据

java - 保存互联网图标然后重新打开会导致 image4j 出现 EOF

java - MVC 中通过线程从内部类调用外部类

java - 生成 AES 和 HMAC key 需要太多时间

matlab - 你如何使用matlab在有限域上绘制椭圆曲线

c - 是否可以使用ECC私钥进行加密?