6

我目前正在学习加密,我希望能找到更多关于我所学内容的说明。

假设消息“100 美元应该从账户 123456 转移到 555555”是使用 aes-128-cbc 和随机 IV 加密的。我的教授说可以更改加密文本,这样当再次解密时,消息显示“900 美元应该从账户 123456 转移到 555555”。你怎么做呢?

我尝试通过生成自己的密钥和 iv,加密消息,然后将其转换为十六进制字符来自己解决这个问题。从那里我可以换出一些字符然后解密吗?我试着玩这个,但似乎总是有问题。

我们为此使用了一个基本的 linux 命令行。

任何帮助或解释都会很棒!

4

2 回答 2

4

假设字符串是使用一次性密码加密的,得到的密文是“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 xor m0。现在我们要将结果字节更改为 0x39,即数字 9 的 ASCII 码。所以我们需要解决 0x31 xor m0 = 0x39。

使用 CBC 模式时也适用相同的原则。您可以以类似的方式修改 IV 以更改解码的消息。

于 2014-03-06T04:23:20.730 回答
1
于 2018-05-03T17:38:20.897 回答