CBC расшифровка XOR путаница

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

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

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

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

C0 = 'f20bdba6ff29eed7'
C1 = '58b1ffb4210a580'

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

РЕДАКТИРОВАТЬ: я пробовал код в: как сделать побитовый эксклюзив или из двух строк в Python?

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

Терминальный выход

1 ответ

Глядя на строку, похоже, что это строка hex номера. Сначала преобразовать его в intвыполнить XOR и преобразовать его в hex как:

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

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

Другие вопросы по тегам