2016-09-26 101 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的方式。