2012-06-01 82 views
0

我目前有一个棘手的情况。使用初始化向量解密AES256-rijdeal加密文件

我需要创建将解密已加密的这样的加密文件的机器人方法:

  • 密码的块链接(CBC)

    • AES256(Rijndael算法),使用的初始化向量16个字节看起来像:

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

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

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

    有人可以指向我正确的方向在哪里找到一个例子或张贴一些示例代码,做到了上述?

    N.B.我不知道是否重要,但输出文件总是.pdf

  • 回答

    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); 
    

    顺便说一句,“Rijndael算法”是一样的AES,所以你会得到更好的结果,如果你只是搜索“AES”。

    +0

    谢谢,但我怎样才能用我自己的密钥填写'key'? – Pieter888

    +0

    你说你知道钥匙吧?它的格式是什么? –

    +0

    这是'字符串'格式 – Pieter888