我正在尝试使用Java执行AES加密。
我的密钥大小为32个字节,由64个ASCII字符表示。 (我想用32字节密钥执行AES,我认为这是AES 1024位)
byte[] key = DatatypeConverter.parseHexBinary("03d42e229a8992a195a7bc0789a0fb6636cc5edeb0f106c8ca0d843b269f5396");
当我调用以下方法时,我会收到以下内容:
java.security.InvalidKeyException: Illegal key size or default parameters
这是我在Java中的方法
public static byte[] AESDecryption(byte[] key, byte[] data)
{
byte[] retval = null;
try
{
Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding", "SunJCE");
SecretKeySpec thekey = new SecretKeySpec(key,"AES");
cipher.init(Cipher.DECRYPT_MODE, thekey);
retval = cipher.doFinal(data);
}
catch (NoSuchAlgorithmException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (NoSuchProviderException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
catch (NoSuchPaddingException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return retval;
}