2012-06-01 116 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