CBC解密XOR混乱

时间:2016-09-26 17:10:09

标签: python cryptography xor padding-oracle-attack

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

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

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

所以如果我有值:

C0 = 'f20bdba6ff29eed7'
C1 = '58b1ffb4210a580'

我如何对两者进行异或,以便我能看到oracle是否正在返回正确的值?

编辑:我已尝试过代码:how to do bitwise exclusive or of two strings in python?

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

Terminal Output

1 个答案:

答案 0 :(得分:1)

查看字符串,看起来它是hex个数字的字符串。首先将其转换为int,执行XOR并将其重新转换为hex,如下所示:

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

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