2014-12-28 1 views
1

Я пытаюсь написать скрипт 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 в символы, но это не похоже на самое инновационное решение. Я также очень сомневаюсь в эффективности использования строки, чтобы добавить к моему ответу. Наконец, я просто перерабатываю символы своего ключа при применении шифрования, и после некоторых исследований я услышал что-то вроде дополнения, которое, как мне кажется, я должен использовать.

Итак, пожалуйста, помогите, я думаю.

+0

У вас больше шансов получить помощь, если вы сосредоточитесь на одной конкретной проблеме (так что в данном случае не беспокойтесь о дополнении) и расскажите нам, какое поведение вы хотите. –

+0

Что такое блок-шифр? Кажется, One Time Pad (OTP) с повторным ключом, который полностью небезопасен. –

ответ

0

Вы можете либо обрабатывать зашифрованный текст как байты (вы можете хранить двоичные файлы или, например, отправлять двоичные данные по HTTP), либо вы можете кодировать его в текст с использованием кодировки base 64 или hexadecimal. Прежде чем расшифровать, вы должны, конечно, декодировать строки обратно к двоичному зашифрованному тексту.