-1

我正在尝试在 DES 中实现填充 oracle 攻击。我对 CBC 解密过程的理解(或者至少我在课堂上被告知的)是这样的:

假设我们的密文只有两个块,C0 和 C1。解密过程然后与 C1 进行 C0 异或,然后解密。之后,oracle 检查填充并返回 True 或 False。

我的问题是关于异或,我不明白如何在 python 中对两个字符串值进行异或(我对这一切都很陌生)。

所以如果我有价值观:

C0 = 'f20bdba6ff29eed7'
C1 = '58b1ffb4210a580'

我如何对这两者进行异或运算,以便查看预言机是否返回正确的值?

编辑:我已经尝试过以下代码:如何在 python 中按位异或两个字符串?

但是我得到了一个看起来很奇怪的输出,这就是为什么我发布了一个单独的问题。任何帮助将不胜感激谢谢

终端输出

4

1 回答 1

1

查看字符串,它看起来像是一串hex数字。首先将其转换为int,执行XOR并重新转换hex为:

>>> C0 = 'f20bdba6ff29eed7'
>>> C1 = '58b1ffb4210a580'
>>> str(hex(int(C0,16) ^ int(C1,16)))[2:]
'f780c45dbd394b57L'

我不确定 Oracle Padding Attack 是什么,但它是执行的方式XOR

于 2016-09-26T17:16:00.067 回答