我正在Android中进行AES加密和解密。我有一个使用AES / CBC加密的音频文件。我有密钥和IV(初始化向量)。
我看过一些链接。来自this
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
使用了SecretkeySpec类。我应该在哪里使用我的密钥和IV值?
我只需解密前256字节数据。我怎样才能做到这一点?
答案 0 :(得分:0)
在您的代码段中,raw
是您的密钥(作为字节数组):
SecretKeySpec skeySpec = new SecretKeySpec(raw, "AES");
// ^^^ this is your key
当然,如果您将密钥作为十六进制字符串,则需要convert it to bytes。
加密时,您可以自己指定IV,也可以生成随机IV。如果您想指定自己,请使用:
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding"); // adjust padding
cipher.init(Cipher.ENCRYPT_MODE, skeySpec, new IvParameterSpec(...));
如果你想使用自动的,请务必记录通过调用
选择哪一个cipher.getIV();
对于解密,您必须使用IvParameterSpec
指定IV,就像使用加密一样。
我只需解密前256字节数据。我怎样才能做到这一点?
考虑使用CipherInputStream
并从中只读取256个字节。