2016-09-26 66 views
-1

我想实现DES填充神谕攻击。我在CBC解密过程的理解(或者至少是我在课上说)是这样的:CBC解密XOR混乱

说我们的密文是只有两个街区,C0和C1。然后解密过程与C0异或,然后解密。之后,oracle检查填充并返回True或False。

我的问题是周围的XOR,我不理解如何在异或蟒蛇两个字符串值(我很新的一切关于这一点)。

所以,如果我有值:

C0 = 'f20bdba6ff29eed7' 
C1 = '58b1ffb4210a580' 

我如何去异或两个,所以我可以看到,如果甲骨文是返回正确的值或者不是?

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

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

Terminal Output

+1

的可能的复制[怎么办按位在Python两个字符串的异或?(http://stackoverflow.com/questions/2612720/)或[如何对XOR二进制与 - 蟒蛇(HTTP ://stackoverflow.com/questions/19414093/)或[是-IT-可能对DO-按位操作 - 上 - 一个串入-蟒](http://stackoverflow.com/questions/6279134 /)或[按位异或十六进制数字在蟒蛇](http://stackoverflow.com/questions/11119632/)或[如何做xor-two-strings-that-c​​ontain-hex-数字式-蟒](http://stackoverflow.com/questions/17388004/) – TessellatingHeckler

回答

1

望着字符串,它看起来是hex数字的字符串。首先将其转换为int,执行XOR然后将其重新转换为hex为:

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

我不知道什么甲骨文填充攻击的,但它是执行XOR的方式。