4

我正在研究android中的AES加密和解密。我有一个使用 AES/CBC 加密的音频文件。我有密钥和 IV(初始化向量)。

我已经阅读了一些链接。从此_

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");

使用的 SecretkeySpec 类。我应该在哪里使用我的密钥和 IV 值?

而且我只需要解密前 256 个字节的数据。我怎样才能做到这一点?

4

1 回答 1

1

在您的代码片段中,raw是您的密钥(作为字节数组):

SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
//                                         ^^^ this is your key

当然,如果您将密钥作为十六进制字符串,则需要将其转换为 bytes

加密时,您可以自己指定一个 IV,也可以随机生成一个。如果要指定自己,请使用:

Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // adjust padding
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec(...));

如果您想使用自动的,请务必通过调用记录选择了哪一个

cipher.getIV();

对于解密,您必须指定 IV,并且使用 来执行此操作IvParameterSpec,就像加密一样。

而且我只需要解密前 256 个字节的数据。我怎样才能做到这一点?

考虑使用 aCipherInputStream并从中读取 256 个字节。

于 2014-12-16T12:52:57.410 回答