javax.crypto.BadPaddingException:给定的最后一个块未正确填充-解密文本时

javax.crypto.BadPaddingException:给定的最后一个块未正确填充-解密文本时,java,encryption,Java,Encryption,当Dycrypt纯文本时,则引发BadPaddingException javax.crypto.BadPaddingException:给定的最后一个块未正确填充 com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811) 请参阅以获取一些建议。您是否确实尝试“解密纯文本”(=未加密的文本)?如果您这样做,您将得到填充异常,因为随机数据通常不会解密为具有适当填充的内容。如果没有,请提供一个可验证的问题示例。 private s

当Dycrypt纯文本时,则引发BadPaddingException javax.crypto.BadPaddingException:给定的最后一个块未正确填充 com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:811)

请参阅以获取一些建议。您是否确实尝试“解密纯文本”(=未加密的文本)?如果您这样做,您将得到填充异常,因为随机数据通常不会解密为具有适当填充的内容。如果没有,请提供一个可验证的问题示例。
private static final String ENCRYPTION_KEY = "harshitorld!@#$%"; 
private static byte[] randomBytesToDecrypt;
private static final String ALGORITHM = "Rijndael";
private static final String UNICODE_FORMAT = "UTF8";
private static String encrypt(String value) {
    try {
        Key key = generateKey();
        Cipher c = Cipher.getInstance(ALGORITHM);
        c.init(Cipher.ENCRYPT_MODE, key);
        byte[] encValue = c.doFinal(value.getBytes(UNICODE_FORMAT));
        String encryptedValue = new BASE64Encoder().encode(encValue);
        return encryptedValue;
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return null;
}

public static String decrypt(String encryptedValue) {
    try {
        Key key = generateKey();
        Cipher c = Cipher.getInstance(ALGORITHM);
        c.init(Cipher.DECRYPT_MODE, key);
        byte[] decordedValue = new BASE64Decoder().decodeBuffer(encryptedValue);
        byte[] decValue = c.doFinal(decordedValue);//////////LINE 50
        String decryptedValue = new String(decValue,UNICODE_FORMAT);
        return decryptedValue;
    } catch (Exception ex) {
        ex.printStackTrace();
    }
    return null;
}

private static Key generateKey() throws Exception {
    byte[] keyAsBytes;
    keyAsBytes = ENCRYPTION_KEY.getBytes(UNICODE_FORMAT);
    Key key = new SecretKeySpec(keyAsBytes, ALGORITHM);
    return key;
}

public static String encryptText(String normalText) {
    return encrypt(normalText);
}

public static String decryptText(String encryptedText) {
    return decrypt(encryptedText);
}