AES - 生成密钥并加载密钥会产生无效的密钥异常

时间:2011-07-04 03:00:22

标签: java android cryptography aes

我一直在努力让AES加密和解密在Java中工作一段时间。不幸的是我运气不好。现在我可以在一个显示代码的方法中生成一个键

keyGen = KeyGenerator.getInstance("AES");
SecureRandom random = SecureRandom.getInstance();
keyGen.init(size, random);
SecretKey key = keyGen.generateKey();
AesKey = key.getEncoded();

要使用密钥,我将其转换回SecretKeySpec并尝试加密输入字节。我的加密代码如下所示。

SecretKeySpec keySpec = new SecretKeySpec(AesKey, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
return cipher.doFinal(input);

但是,当我调用cipher.init行时,我得到一个InvalidKeyException。

我是否错误地生成了密钥?我是否错误地加载了密钥?这是一个组合吗?我坚持这一点,所以任何见解都会受到赞赏。

更新

所以我没有意识到,但是调用generate函数的部分传入的是无效大小。当我发现代码的一部分并将其改为256时,一切正常。

1 个答案:

答案 0 :(得分:1)

调用generate函数的代码传递的是无效大小。我认为这将被keyGen.generateKey()行捕获,但我错了。在我真正尝试使用密钥之前,它没有抛出错误。更改调用generate函数的代码,使大小为256,解决问题。

相关问题