Очень многие в детстве интересовались шифрами, не зная такого сложного слова "криптография".
Что же это такое и какие еще термины мы не использовали?
Терминология
Криптография — это наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним), целостности данных (невозможности незаметного изменения информации), аутентификации (проверки подлинности авторства или иных свойств объекта), а также невозможности отказа от авторства.
Открытый/исходный текст — текст, сообщение, которое мы будем шифровать.
Ключ — информация, чаще всего текст, с помощью которого и будет происходить шифрование и расшифровка. Должен храниться в секрете.
Закрытый/зашифрованный текст/шифротекст — это результат шифрования.
Шифр Цезаря
Некоторые, услышав "Цезарь", думают в первую очередь о салате, потом об Императоре и в очень редких случаях о шифре.
Что же это за шифр?
Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования. Шифр назван в честь римского полководца Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.
Принцип прост: каждая буква исходного текста сдвигается по алфавиту на определенный шаг, одинаковый для каждого символа. Ключом к такому шифру является целое число или шаг шифра.
Пример:
Исходный текст: ананас
Ключ: 1
Шифротекст: бобобт
Реализация в Python
Цели:
- научиться использовать функции chr() и ord().
- изучить ASCII-таблицы.
Для эффективной замены символов мы воспользуемся ASCII-таблицами. Что это такое?
ASCII была разработана (1963 год) для кодирования символов, коды которых помещались в 7 бит (128 символов). Со временем кодировка была расширена до 8-ми бит (256 символов), коды первых 128-и символов не изменились.
Простым языком — таблица представляет любые символы в виде чисел.
>>> chr(65)
'A'
>>> ord('A')
65
>>> chr(65+8)
'I'
>>> chr(52)
'4'
>>> chr(ord('F'))
'F'
>>> ord(chr(68))
68
- Функция chr() по номеру выдаст нам символ из таблицы.
- Функция ord() выдаст номер заданного символа.
Мы шифруем текст на русском, нам нужна русская таблица, номера букв в ней 1072-1103.
key = int(input("Введите шаг шифрования"))
open_text = input("Введите исходный текст")
closed_text = ""
for char in open_text: # для каждого символа
char_num = ord(char) # находим номер в таблице
if char_num+key < 1104: # если при шаге не выходим за край
closed_text+=chr(char_num+key) # находим символ со сдвигом
else:
closed_text+=chr(char_num+key-32) # или переходим в начало алфавита
print(closed_text)
Шифр Цезаря - это самый простой и распространенный способ шифрования. Очень часто метод перестановки сочетают с другими шифрами и кодами, чтобы усложнить расшифровку.
Написание кода на Python для зашифровки и расшифровки сообщений не так сложна, как кажется, и у каждого получится.
НЕ бойтесь узнавать новое и экспериментировать!
На связи колонка про шифры, увидимся через неделю.
#криптография #шифры и коды #шифры #коды #программирование #безопасность