Найти - Пользователи
Полная версия: Шифрование
Начало » Python для новичков » Шифрование
1
SuperBlur
Всем добрый вечер, не могу нормально реализовать шифрования маршрутной перестановкой (вертикальная перестановка либо горизонтальная)
Нужно сделать ввод текста, формирование ключа
Вывод на экран исходного текста, ключа, шифрованного текста и расшифрованного текста

Код для формирование ключа есть такой:
 def key():
    message = entry_in.get()
    offset1 = sample(range(1, len(message) + 1), len(message))
    entry_key.delete(0, 'end')
    entry_key.insert(0, ''.join(map(str, offset1)))

Код формы:
 root = form.Tk()
root.geometry('200x200')
lbl1 = form.Label(text='Введите текст').pack()
entry_in = form.Entry(width=30)
entry_in.pack()
lbl_key = form.Label(text='Ключ шифрования').pack()
entry_key = form.Entry(width=30, text='')
entry_key.pack()
lbl2 = form.Label(text='Зашифрованый текст').pack()
entry_out = form.Entry(width=30)
entry_out.pack()
btn_key = form.Button(text='Создать ключ', command=key)
btn_key.pack()
btn = form.Button(text='Шифрование', command=process)
btn.pack()
btn2 = form.Button(text='Дефишрование', command=process2)
btn2.pack()
root.mainloop()

Пробовал делать таким методом:
 plaintext = 'Привет'
key = 2
ciphertext = [''] * key
for column in range(key):
        pointer = column
        while pointer < len(plaintext):
            ciphertext[column] += plaintext[pointer]
            print(ciphertext)
            pointer += key
            
print(''.join(ciphertext))

Также наткнулся на ресурс : https://teachen.info/cspp/unit6/lab06-02.html
py.user.next
Сделай эту задачу сначала в консоли полностью. Отдели ввод от подсчётов, а подсчёты отдели от вывода. Когда у тебя будет такая программа, она будет представлять из себя соединение изолированных друг от друга частей: ввод, преобразования, вывод. И вот когда у тебя будет такая программа (сделанная таким образом), ты часть программы, отвечающую за ввод из консоли, заменишь на GUI-форму, а часть программы, отвечающую за вывод, заменишь на GUI-окно. Преобразования при этом вообще никак не будут затронуты.

SuperBlur
Код для формирование ключа есть такой:
Код для формирования ключа не должен вообще включать никакой ввод ниоткуда. Введённые данные уже должны быть получены до формирования ключа. В этом твоя ошибка - ты всё насмешивал друг с другом.
ZerG
https://python.su/forum/topic/41952/?page=1#post-224049
Вот полностью готовая функция шифратор
Допиши дешифратор
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB