2013-05-20 81 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