我目前正在学习有关加密的过程,希望对我学到的东西有更多的说明。
假设使用aes-128-cbc和随机IV对消息“应该将100美元从123456帐户移动到555555”进行了加密。我的教授说,可以更改加密的文本,以便在再次解密时,消息显示为“应将900美元从帐户123456移到555555”。您如何去做呢?
我尝试通过自己生成密钥和iv,加密消息,然后将其转换为十六进制字符来自行解决。我可以从那里换出一些字符然后解密吗?我试着玩这个游戏,但是似乎总是出问题了。
为此,我们使用了基本的Linux命令行。
任何帮助或解释都将很棒!
假设使用一次性填充密钥对字符串进行了加密,并且密文为“ B8B7D8CB9860EBD0163507FD00A9F923D45 ...”。我们知道明文的第一个字节,即数字1,具有ASCII代码0x31。密文的第一个字节是0xB8。如果k0表示密钥的第一个字节,则0x31 xor k0 = 0xB8。对一次性键盘进行解码只是将密文与密钥进行异或。因此,人员解码将获得明文的第一个字节为0x31 = 0xB8 xor k0。如果我们将密文的第一个字节与m0进行异或,则对密文进行解码的人员将获得(0xB8 xor m0)xor k0。但这只是(0xB8 xor k0)xor m0,因为xor是可交换的和关联的。最后一个表达式可以减少为0x31 x或m0。现在我们想将结果字节更改为数字9的ASCII代码0x39。因此,我们需要求解0x31 xor m0 = 0x39。
使用CBC模式时,适用相同的原理。您可以以类似方式修改IV,以更改解码后的消息。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句