如何解密aes 128 ctr加密文件以支持http範圍支持? 這裏是加密文件: https://www.dropbox.com/s/8e9qembud6n3z7i/encrypted.txt?dl=0部分使用aes 128 ctr解密Mega.co.nz文件以支持流式範圍
密鑰BASE64加密:E7VQWj3cv1JUi5pklirtDQ9SRJt1DhiqYgzPSpIiVP0
的IV是通過解密其給出陣列中的密鑰計算:
Array
(
[0] => 330649690
[1] => 1037877074
[2] => 1418435172
[3] => 2519395597
[4] => 257049755
[5] => 1963858090
[6] => 1645006666
[7] => 2451723517
)
IV是通過在長度爲2的第4個偏移處對數組進行切片而獲得的並且數組的最後兩個元素被填充以0:
Array
(
[0] => 257049755
[1] => 1963858090
[2] => 0
[3] => 0
)
然後關鍵是異或並製成128bit的陣列,然後通過PHP函數包轉換成字符串:
$key = array($key[0]^$key[4], $key[1]^$key[5], $key[2]^$key[6], $key[3]^$key[7]);
$key = base64_encode(a32_to_str($key));
$iv = base64_encode(a32_to_str($iv));
然後該文件被使用正常解密php aes庫。我正在使用mcrypt_generic進行解密過程。 當我試圖從第二個字節或第三個或中間解密文件時出現問題。 如果我從第一個字節解密它,它工作正常。
我注意到另一件事是,如果我解密從第2個字節的文件,但在此之前,我解密一個隨機字符串或僅僅是數字0,解密從那麼第2個字節的作品。 我想這與IV塊計數器有關。我解密一個隨機字節,然後繼續解密實際的密碼,以便它能正常工作。 我需要從一開始就開始解密文件,可以從40mb偏移量中說出來支持實時搜索。 但是這會消耗太多的內存,因爲在尋求可以完成之前,我將不得不解密40mb的0。 如何將IV計數器值移至40mb偏移?
我讀到IV爲解密每個塊增加+1。但是因爲我的IV是一個數組,所以我嘗試了一切,如果我在其中加1,它就不起作用。 我幾個月沒去過水果。請幫助
這是我剛纔的問題這有助於理解過程中的位:AES 128 bit CTR partial file decryption with PHP
在這種情況下,'nonce'場8個字節;它是問題中IV的兩個非零整數。 'startPosition/16'長是另外兩個整數。 – ntoskrnl 2014-10-06 11:49:26