Я пытаюсь написать скрипт python, который может шифровать и расшифровывать текст с помощью блочного шифрования, но я все равно получаю совершенно пустые выходы. После попытки найти источник проблемы я понял, что после того, как я выполнил свою побитую операцию XOR (a^b), мой скрипт не смог преобразовать новое значение ascii в символ.Проблемы с форматированием вывода Block Cipher Python unichr()
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 для каждого символа. Я уже использовал печать, чтобы подтвердить, что они выводят правильные списки.
Проблема заключается в нескольких входах, которые я пробовал, и ответа не получено. Что еще более важно, заменив печать на различные места, я обнаружил, что str (unichr (element^rawkeylist [kli])) ничего не выводит после выполнения небольшого исследования в unichr. Я обнаружил, что он действительно выводит u '_____' (с _____, выступая в качестве заполнителя для чего-либо).
Я мог бы просто не преобразовывать значения ASCII в символы, но это не похоже на самое инновационное решение. Я также очень сомневаюсь в эффективности использования строки, чтобы добавить к моему ответу. Наконец, я просто перерабатываю символы своего ключа при применении шифрования, и после некоторых исследований я услышал что-то вроде дополнения, которое, как мне кажется, я должен использовать.
Итак, пожалуйста, помогите, я думаю.
У вас больше шансов получить помощь, если вы сосредоточитесь на одной конкретной проблеме (так что в данном случае не беспокойтесь о дополнении) и расскажите нам, какое поведение вы хотите. –
Что такое блок-шифр? Кажется, One Time Pad (OTP) с повторным ключом, который полностью небезопасен. –