javax.crypto.BadPaddingException:给定的最终块未正确填充-使用AES解密方法时

时间:2019-05-26 10:11:08

标签: encryption aes

正在使用AES解密方法,但由于BadPaddingException而无法完全实现。

以下是我用于解密方法的示例,但出现了异常: javax.crypto.BadPaddingException:给定最后一个块,未正确填充。

public class AES_runner {

    private static final String key = "<key of 32 length";
    private static final String initVector = "init vector of length 16";
    private static final String encryptedString = "<encrypted string";

    public static void main(String[] args) {

        String decryptedString = decrypt(encryptedString);
        System.out.println("After decryption - " + decryptedString);

    }

    public static String decrypt(String encrypted) {
        try {
            IvParameterSpec iv = new IvParameterSpec(initVector.getBytes("UTF-8"));
            SecretKeySpec skeySpec = new SecretKeySpec(key.getBytes("UTF-8"), "AES");

            Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5PADDING");
            cipher.init(Cipher.DECRYPT_MODE, skeySpec, iv);
            byte[] original = cipher.doFinal(javax.xml.bind.DatatypeConverter.parseBase64Binary(encrypted));

            return new String(original);
        } catch (Exception ex) {
            ex.printStackTrace();
        }

        return null;
    }

}

尝试了许多示例,并检查了许多相关的堆栈溢出现有问题,但对于每个示例而言,所有问题都具有相同的异常。

如果有人成功实施了AES加密/解密方法来克服此异常,请在这种情况下提供帮助。

0 个答案:

没有答案