2016-09-26 7 views
-1

Я пытаюсь реализовать атаку оскорбления в DES. Мое понимание процесса дешифрования CBC (или, по крайней мере, то, что я сказал в классе):CBC decryption XOR confusion

Скажем, наш шифрованный текст состоит только из двух блоков, C0 и C1. Процесс дешифрования затем C0 XORed с C1 и затем дешифруется. После этого оракул проверяет заполнение и возвращает либо True, либо False.

Мой вопрос вокруг XOR, я не понимаю, как XOR две строковые значения в python (я очень новичок во всем этом).

Так что, если у меня есть значения:

C0 = 'f20bdba6ff29eed7' 
C1 = '58b1ffb4210a580' 

Как я идти о XORing два, так что я могу видеть, если оракул возвращает правильное значение или нет?

EDIT: Я попробовал код: how to do bitwise exclusive or of two strings in python?

Но я получаю странный вывод, который почему я разместил отдельный вопрос. Любая помощь будет оценена благодаря

Terminal Output

+1

Возможный дубликат [как сделать побитовое исключение или две строки в python?] (Http://stackoverflow.com/questions/2612720/) или [how-to-xor-binary-with-python] (http : //stackoverflow.com/questions/19414093/) или [is-it-possible-to-do-bitwise-operations-on-the-string-in-python] (http://stackoverflow.com/questions/6279134 /) или [побитовое-xor-of-hex-numbers-in-python] (http://stackoverflow.com/questions/11119632/) или [как-к-xor-two-stringings-that-содержать-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' 

Я не уверен, что Oracle Attack Перетяжка есть, но это способ выполнения XOR.

 Смежные вопросы

  • Нет связанных вопросов^_^