使用初始化向量解密AES 256-rijndael加密文件

时间:2012-06-01 08:08:58

标签: android encryption rijndael

此刻我的情况很棘手。

我需要创建一个android方法来解密已加密的加密文件,如下所示:

  • AES256(Rijndael)
  • Cipher-Block-Chaining(CBC)使用16字节的初始化向量,如下所示:

{0,1,1,2,3,5,8,13,21,34,55,89,144,233,122,100}

我也知道该文件的加密密钥,但现在让我们说:“船”

我一直在谷歌上搜索,但我找不到使用这种加密组合的在线。有些涉及Rijndael算法,但没有让我选择初始化向量,而其他人根本不支持AES256。

有人能指出我找到一个例子的正确方向或发布一些上述代码示例吗?

N.B。我不知道是否重要提及但输出文件始终是.pdf

1 个答案:

答案 0 :(得分:1)

这是一个非常标准的配置,很难相信你没有找到任何样品。您需要做的就是从IV字节创建IvParameterSpec并使用它初始化Cipher。像这样:

SecretKey key = getEncryptionKey(); 
byte[] iv = new byte[] { 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, (byte)144, (byte)233, 122, 100 };
byte[] cipherBytes = readEncryptedFile();
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
IvParameterSpec ivParams = new IvParameterSpec(iv);
cipher.init(Cipher.DECRYPT_MODE, key, ivParams);
byte[] plaintext = cipher.doFinal(cipherBytes);
BTW,'Rijndael'与AES相同,所以如果你只是搜索'AES',你会得到更好的结果。