我正在研究android中的AES加密和解密。我有一个使用 AES/CBC 加密的音频文件。我有密钥和 IV(初始化向量)。
我已经阅读了一些链接。从此_
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
使用的 SecretkeySpec 类。我应该在哪里使用我的密钥和 IV 值?
而且我只需要解密前 256 个字节的数据。我怎样才能做到这一点?
我正在研究android中的AES加密和解密。我有一个使用 AES/CBC 加密的音频文件。我有密钥和 IV(初始化向量)。
我已经阅读了一些链接。从此_
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
使用的 SecretkeySpec 类。我应该在哪里使用我的密钥和 IV 值?
而且我只需要解密前 256 个字节的数据。我怎样才能做到这一点?
在您的代码片段中,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 个字节。