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
,