Java 使用字符串密钥 BadPaddingException 的 AES 128 解密
Java AES 128 decryption with String key BadPaddingException
正在尝试将数据解密为使用 AES-128 和字符串密钥加密的字节数组 "keykeykeykeykey1"
代码:
byte[] dataBytes = new byte []{(byte)0xf3,(byte)0x8b,(byte)0x0c,(byte)0xb3,(byte)0xa3,(byte)0x26,(byte)0x12,(byte)0x23,(byte)0xe0,(byte)0xe0,(byte)0x9f,(byte)0x1f,(byte)0x28,(byte)0x01,(byte)0x28,(byte)0x35};
SecretKeySpec secretKeySpec = new SecretKeySpec("keykeykeykeykey1".getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decryptedData = cipher.doFinal(dataBytes); //this line throws exception
给我 BadPaddingException。我错过了什么?
您没有在密码算法中指定模式或填充。您需要确定加密数据时使用的值。
当您将算法更改为 "AES/ECB/NOPADDING" 时没有错误,但这不一定是正确的模式或填充。
正在尝试将数据解密为使用 AES-128 和字符串密钥加密的字节数组 "keykeykeykeykey1"
代码:
byte[] dataBytes = new byte []{(byte)0xf3,(byte)0x8b,(byte)0x0c,(byte)0xb3,(byte)0xa3,(byte)0x26,(byte)0x12,(byte)0x23,(byte)0xe0,(byte)0xe0,(byte)0x9f,(byte)0x1f,(byte)0x28,(byte)0x01,(byte)0x28,(byte)0x35};
SecretKeySpec secretKeySpec = new SecretKeySpec("keykeykeykeykey1".getBytes("UTF-8"), "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
byte[] decryptedData = cipher.doFinal(dataBytes); //this line throws exception
给我 BadPaddingException。我错过了什么?
您没有在密码算法中指定模式或填充。您需要确定加密数据时使用的值。
当您将算法更改为 "AES/ECB/NOPADDING" 时没有错误,但这不一定是正确的模式或填充。