Algorithm 如何实现CBC模式?

Algorithm 如何实现CBC模式?,algorithm,cryptography,aes,cbc-mode,Algorithm,Cryptography,Aes,Cbc Mode,我的问题在于AES加密算法和在算法中实现IV。我有欧洲央行版本的AES工作,我已经彻底测试了它。我试图通过添加一个IV来提高安全性。我希望通过了解IV在算法中的实现方式来更好地理解它 据我所知,IV在加密之前与纯文本异或,然后与加密数据一起存储以进行解密。但是当我去解密的时候,在解密过程之后我会做同样的异或计算吗 我尝试了上面的过程,我的加密和解密测试使用相同的值,但是当我将两个过程并排放置时,我得到的值彼此非常接近,但它似乎不太正常。不要求代码被修复,只要求为我制定流程,这样我就知道我做得正确

我的问题在于AES加密算法和在算法中实现IV。我有欧洲央行版本的AES工作,我已经彻底测试了它。我试图通过添加一个IV来提高安全性。我希望通过了解IV在算法中的实现方式来更好地理解它

据我所知,IV在加密之前与纯文本异或,然后与加密数据一起存储以进行解密。但是当我去解密的时候,在解密过程之后我会做同样的异或计算吗

我尝试了上面的过程,我的加密和解密测试使用相同的值,但是当我将两个过程并排放置时,我得到的值彼此非常接近,但它似乎不太正常。不要求代码被修复,只要求为我制定流程,这样我就知道我做得正确。谢谢。

我总是觉得在CBC模式下可视化发生的事情非常有用:


您需要解密第一个密文块,然后对IV进行异或运算以获得第一个明文块。此后,您需要将前一个密文块与当前解密数据块进行异或运算。

如果听起来您已经正确地实现了CBC模式进行加密和解密。你必须详细说明“不完全正确”和“非常接近”。到底是什么问题?我很抱歉这么含糊。基本上,我用已知的加密和解密输入设置了单元测试。两者都通过了我的单元测试。但是我有一个单元测试,它将我的加密输入到我的解密中,这应该会给我同样的结果。但当我查看调试器时,值仅为1左右。自从我让欧洲央行开始工作以来,XOR是我唯一添加的东西,我只是不确定它到底出了什么问题。但是如果我从解密中删除XOR,那么测试通过,解密失败。如有必要,我可以在编辑中发布我的方法。谢谢。希望这是为了上课/学习的目的-否则,你绝对不应该自己实现加密算法。AES看起来很简单,但有许多复杂的实现细节(各种定时/其他侧通道攻击),这使得正确实现非常重要。我正在实现我自己的AES加密算法。我已经准备好了一个测试版的ECB。但正如我所读到的,这不是一个非常安全的版本,所以我尝试实现一个随机初始化向量。我明白这并不容易,因此我通过大量的单元测试来确保每个函数都在做它应该通过测试向量做的事情。我只是想寻求一些帮助,以便我能正确地完成它。可能的重复肯定会有所帮助。我没有意识到这些额外的步骤。非常感谢您的帮助和链接。