Блочный шифр Python unichr() Форматирование вывода Проблемы
Я пытаюсь написать скрипт на Python, который может шифровать и дешифровать текст с помощью блочного шифра, но я получаю совершенно пустые результаты. После попытки отследить источник проблемы, я понял, что после выполнения битовой операции XOR (a^b) мой сценарий не может преобразовать новое значение ascii в символ.
def blockcrypt(text,key):
rawkeylist = rawintkey(key)
textlist = asciitextlist(text)
answer=''
kli = 0
for element in textlist:
answer+=str(unichr(element^rawkeylist[kli]))
kli+=1
if kli==len(rawkeylist):
kli=kli%len(rawkeylist)
return answer
Где rawkeylist - это оригинальный ключ, преобразованный в список значений ascii (в десятичной форме) для каждого символа. И textlist - это текст, преобразованный в список десятичных значений ascii для каждого символа. Я уже использовал print, чтобы подтвердить, что они выводят правильные списки.
Проблема в том, что для нескольких входов, которые я пробовал, ответ не получен. Что еще более важно, подставив print в разные места, я обнаружил, что str(unichr(element^rawkeylist[kli])) ничего не выводил, после небольшого исследования unichr я обнаружил, что на самом деле он выводит u'_____' (с _____ выступая в качестве заполнителя для чего угодно).
Я мог просто не преобразовывать свои значения ASCII обратно в символы, но это не самое инновационное решение. Я также очень сомневаюсь в эффективности использования строки, чтобы добавить к моему ответу. Наконец, я просто перебираю символы моего ключа при применении шифра, и после некоторого исследования я услышал о чем-то, называемом заполнением, которое я считаю необходимым использовать.
Так что, пожалуйста, помогите, я думаю.
1 ответ
Вы можете либо продолжать обрабатывать зашифрованный текст как байты (вы можете хранить двоичные файлы или отправлять двоичные данные, например, по HTTP), либо вы можете закодировать его в текст, используя основную 64 или шестнадцатеричную кодировку. Перед расшифровкой вы должны, конечно, декодировать строки обратно в двоичный зашифрованный текст.