Найти в Дзене
Spark. Блог обо всем!

Криптография, а не белиберда

Оглавление

Очень многие в детстве интересовались шифрами, не зная такого сложного слова "криптография".
Что же это такое и какие еще термины мы не использовали?

Терминология

Криптография — это наука о методах обеспечения конфиденциальности (невозможности прочтения информации посторонним), целостности данных (невозможности незаметного изменения информации), аутентификации (проверки подлинности авторства или иных свойств объекта), а также невозможности отказа от авторства.

Открытый/исходный текст — текст, сообщение, которое мы будем шифровать.

Ключ — информация, чаще всего текст, с помощью которого и будет происходить шифрование и расшифровка. Должен храниться в секрете.

Закрытый/зашифрованный текст/шифротекст — это результат шифрования.

-2

Шифр Цезаря

Некоторые, услышав "Цезарь", думают в первую очередь о салате, потом об Императоре и в очень редких случаях о шифре.
Что же это за шифр?

-3

Шифр Цезаря, также известный как шифр сдвига, код Цезаря или сдвиг Цезаря — один из самых простых и наиболее широко известных методов шифрования. Шифр назван в честь римского полководца Гая Юлия Цезаря, использовавшего его для секретной переписки со своими генералами.

Принцип прост: каждая буква исходного текста сдвигается по алфавиту на определенный шаг, одинаковый для каждого символа. Ключом к такому шифру является целое число или шаг шифра.

-4
Пример:
Исходный текст: ананас
Ключ: 1
Шифротекст: бобобт

Реализация в Python

Цели:

  1. научиться использовать функции chr() и ord().
  2. изучить ASCII-таблицы.

Для эффективной замены символов мы воспользуемся ASCII-таблицами. Что это такое?

ASCII — American Standard Code for Information Interchange.
ASCII — American Standard Code for Information Interchange.

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)
-6

Шифр Цезаря - это самый простой и распространенный способ шифрования. Очень часто метод перестановки сочетают с другими шифрами и кодами, чтобы усложнить расшифровку.
Написание кода на
Python для зашифровки и расшифровки сообщений не так сложна, как кажется, и у каждого получится.

НЕ бойтесь узнавать новое и экспериментировать!
На связи колонка про шифры, увидимся через неделю.

#криптография #шифры и коды #шифры #коды #программирование #безопасность