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