|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.01.2021, 17:09 | #1 |
Регистрация: 29.01.2021
Сообщений: 4
|
Шифрование и Дешифрование (шифр Цезаря)
Код:
Последний раз редактировалось BDA; 29.01.2021 в 17:21. |
29.01.2021, 18:10 | #2 |
Пользователь
Регистрация: 20.07.2020
Сообщений: 69
|
Можно добавить ещё одну функцию, которая будет разбивать строку на символы, их передавать по одному на шифровку/дешифровку, затем результат преобразовывать в строку и выдавать обратно. (разбить строку на символы можно просто преобразовав в список (команда list()).
---------------------------------------------------
Нич-чего не понимаю! Или что-то случилось, или… одно из двух! |
29.01.2021, 22:47 | #3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
1. Кодирование и декодирование - это из области преобразования информации, а шифрование и дешифрование - это из области криптографии. Шифр Цезаря - оттуда же.
Т.е. функции, на мой взгляд, можно назвать как encryption и decryption. 2. Не очень понятно назначение двух списков со сдвигом на 3 позиции и передача величины сдвига в функции. Если передавать в функцию величину сдвига, то достаточно и одного списка. Если использовать готовые списки (без сдвига и со сдвигом), то в функции ничего можно и не передавать. Определяешь позицию символа в одном списке и достаёшь элемент из другого списка. 3. Про шифрование строки уже сказано, но думаю, что новой функции создавать не надо, поскольку исходное значение получается из поля: Код:
Код:
Получил символ. Получил его позицию (индекс) в первом списке (шифрование) и с этим индексом извлекаешь символ из второго списка. При дешифровании поступаешь так же, только ищешь символ во второй строке, и по его индексу, достаёшь символ из первого списка. 4. Но можно и поиграться. Например, сгенерировать ключ. Ключ - это набор чисел, которые задают сдвиг. Вводишь ключ в отдельное поле. Читаешь очередное число из ключа, делаешь сдвиг исходного списка и используешь новый список для шифрования/дешифрования. Так поступаешь со всеми символами сообщения. Ключ может быть и небольшим. Только в том случае, когда перебор значений ключа заканчивается, используешь этот ключ повторно. Важно, что ничего никуда добавлять не надо (см. как у тебя добавляется тройка). Достаточно проверять символы на допустимость. Символ, если он отсутствует в списке, можно просто повторить или заменить случайным из исходного списка. Так думаю, что при дешифровании посторонних символов не должно быть, но и там можно поступать аналогично. Это с тем, что бы не добавлять лишних сообщений. Просто зашифровал или дешифровал. Для сдвига списка предлагаю такую функцию (придумал не сам. Нашёл в Сети и очень рад ей): Код:
Параметр shift оставил для случая работы с ключом. Код:
Как-то так, ...
Последний раз редактировалось ViktorR; 29.01.2021 в 23:31. |
30.01.2021, 10:08 | #4 |
Регистрация: 29.01.2021
Сообщений: 4
|
Спасибо, очень помогли
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Шифр Цезаря | Exalted | Python | 16 | 30.08.2018 11:20 |
Шифр Цезаря | Ти6ка | C# (си шарп) | 7 | 21.02.2017 22:19 |
Шифр цезаря | microlab | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 19.01.2014 18:41 |
Шифр Цезаря | Jasper92 | Помощь студентам | 3 | 02.12.2009 18:47 |