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

使用des-ede、javax.crypto.badpaddingexception的解密错误,java,encryption,cryptography,padding,des,Java,Encryption,Cryptography,Padding,Des,我一直被困在我的代码错误,它不会让我正确解密! 我只将8个字节的数据传递给数据字节,我正在传递 一个24字节的键对键字节。 我试图以字节数组的形式返回解密后的数据。 我总是收到坏的填充异常 谢谢 以下是代码片段: private static byte[] DESEdeDecrypt(byte[] keyBytes, byte[] dataBytes){ byte[] decryptedData = null; try{ DESedeKeySpec keySpe

我一直被困在我的代码错误,它不会让我正确解密! 我只将8个字节的数据传递给数据字节,我正在传递 一个24字节的键对键字节。 我试图以字节数组的形式返回解密后的数据。 我总是收到坏的填充异常

谢谢

以下是代码片段:

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。

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

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

DESede速度慢且过时。除非与旧代码兼容,否则不应使用它。对于新工作,最好使用AES。

如果您没有在另一侧指定任何填充,请尝试使用“DESede/ECB/NoPadding”…如果您没有在另一侧指定任何填充,请尝试使用“DESede/ECB/NoPadding”。。。