LINUX.ORG.RU

Python уполз

 , ,


0

1
import sys
def makeVernamCypher( text, key ):
    answer = ""
    p = 0 
    for char in text:
        answer += chr(ord(char) ^ ord(key[p]))
        p += 1
        if p==len(key):
            p = 0
    return answer
text = sys.argv[1]
key = sys.argv[2]
txt = makeVernamCypher(text, key)
print(txt)

Пробую запустить:

cheky@breky:~$ verman.py helloworld asdfgyjkmp
Получаю пустоту. В чем проблема?



Последнее исправление: PanZagloba (всего исправлений: 1)

У тебя терминал, наверно, не умеет в эти символы, выведи в файл, там какая-то каша уровня ^A^H^H^A^T

alozovskoy ★★★★★
()

В том что символы непечатные в answer. Выведи как hex и все будет

mersinvald ★★★★★
()

Ну засунь же print везде, да посмотри промежуточные данные где какие.

crutch_master ★★★★★
()

Можно без p:

from sys import argv
from itertools import cycle

def vernam_enc(text, key):
    t = text.encode()
    k = cycle(key.encode())
    m = map(int.__xor__, t, k)
    return bytes(m).hex()
    
def vernam_dec(hexdata, key):
    d = bytes.fromhex(hexdata)
    k = cycle(key.encode())
    m = map(int.__xor__, d, k)
    return bytes(m).decode()
    

t, k = argv[1:3]

e = vernam_enc(t, k)
d = vernam_dec(e, k)

print('Encoded:', e)
print('Decoded:', d)

anonymous
()
Ответ на: комментарий от PanZagloba

Спасибо, получилось.

всегда пожалуйста, обращайтесь

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.