0

我现在有一个棘手的情况。

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

  • AES256 (Rijndael)
  • 密码块链接 (CBC) 使用 16 字节的初始化向量,如下所示:

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

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

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

有人可以指出我在哪里找到示例或发布一些执行上述操作的示例代码的正确方向吗?

注意我不知道是否重要,但输出文件始终是 .pdf

4

1 回答 1

1

这是一个非常标准的配置,很难相信你没有找到任何样品。您需要做的就是IvParameterSpec从您的 IV 字节创建一个并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);

顺便说一句,'Rijndael' 与 AES 相同,所以如果你只搜索'AES',你会得到更好的结果。

于 2012-06-01T08:24:32.557 回答