2013-05-20 79 views
1

我的問題在於AES加密算法,並在算法中實現了IV。我有ECB版本的AES工作,我已經徹底測試過它。我試圖通過添加IV來使它更安全。我期待通過了解算法中如何實現IV來更好地理解它。如何實現CBC模式?

我瞭解到IV在加密之前與純文本進行XOR,然後將IV與加密數據一起存儲以用於解密。但是當我去解密的時候,我是否在解密過程之後進行相同的XOR計算?

我試過上面的過程,我的加密和解密測試使用相同的值,但是當我把兩個進程並排放置時,我的值彼此非常接近,但似乎沒有工作完全正確。不要求修復代碼,只需要爲我編寫程序,以便我知道我正確地做到了這一點。謝謝。

+2

如果聽起來像您已經正確實施CBC模式來進行加密和解密。你必須詳細說明「不太正確」和「非常接近」。究竟是什麼問題? – erickson

+0

我很抱歉如此模糊。基本上我有單位測試設置與加密和解密已知輸入。兩者都通過我的單元測試。但是接下來我有一個單元測試,它將我的加密饋入我的解密中,這應該只是給我同樣的事情。但是當我看着調試器時,這些值僅爲1左右。而且自從我獲得歐洲央行工作以來,XOR是我添加的唯一東西,我只是不確定它在哪裏搞砸了。但是如果我從解密中刪除我的XOR,那麼測試通過並且解密失敗。如有需要,我可以在編輯中發佈我的方法。謝謝。 – Repareman

+0

希望這是爲了一個類/學習的目的 - 否則,你絕對不應該自己實現加密算法。** AES看起來很簡單,但有很多複雜的實現細微差別*(各種定時/其他旁路通道攻擊)*,這使得它可以正確實現。 –

回答

2

我總是發現用於可視化在CBC模式會發生什麼有用的Wikipedia diagrams

wiki diagram

您需要解密密文的第一個塊,然後進行XOR運算IV得到明文的第一塊。此後,您需要將之前的密文塊與當前的解密數據塊進行異或運算。

+0

這絕對有幫助。我不知道這些額外的步驟中的一些。非常感謝您的幫助和聯繫。 – Repareman