Модуль Python Base64 — это мощный инструмент для кодирования и декодирования сообщений. Вы можете использовать его для безопасной отправки данных через Интернет. Это стандартная процедура для веб-сайтов, приложений и коммуникационных служб, использующая этот тип кодирования для защиты конфиденциальных данных от враждебных хакеров.
Модуль Base64 имеет пару функций, которые вы можете использовать для кодирования и декодирования сообщений, добавляя дополнительную безопасность при передаче данных.
Модуль Tkinter и Base64
Tkinter позволяет создавать настольные приложения. Он предлагает множество виджетов, таких как кнопки, метки и текстовые поля, которые упрощают разработку приложений без особых усилий. Вы можете создавать невероятные программы с графическим интерфейсом с помощью Tkinter. Ты мог бы сделать простой калькулятор, приложение со списком дел или
ввод тестовой игры. Чтобы установить Tkinter в вашу систему, откройте терминал и введите:пип установить ткинтер
BASE64 предоставляет функции для кодирования двоичных данных в ASCII, декодирующие их обратно в двоичные. Он поддерживает как стандартное, так и URL-безопасное кодирование, что делает передачу информации более безопасной. Чтобы преобразовать строку в символ Base64, получите значение ASCII каждого символа и вычислите его 8-битный двоичный код. Преобразуйте этот фрагмент из 6 бит, перегруппировав цифры и преобразовав их в соответствующие десятичные значения. Наконец, используйте таблицу кодирования Base64, чтобы получить значения Base64 для каждого десятичного числа.
Как кодировать и декодировать сообщения в Python
Вы можете найти исходный код этого проекта в его Репозиторий GitHub.
Начните с импорта обоих модулей. Инициализируйте экземпляр Tkinter и отобразите корневое окно. Установите заголовок, размеры в пикселях и цвет фона окна.
от ткинтер Импортировать *
Импортировать base64
корень = Тк()
корень.геометрия("750x400")
root.configure (фон ='аква')
корень.заголовок(«Кодировать и декодировать сообщения с помощью Python»)
Используйте виджеты Label для отображения полезной информации о приложении. Метка принимает родительское окно, в которое вы хотите ее поместить, текст, который она должна отображать, а также стиль шрифта, цвет и цвет фона. Использовать пакет() для организации виджета в блоке макета перед его размещением в родительском виджете. StringVar упрощает управление значением виджета, такого как Label или Entry.
Метка (корень, текст=«Кодировщик и декодер сообщений Python», шрифт =«ариал 25 полужирный», фг='белый', бг="фиолетовый").пакет()
Текст = СтроковаяПеременная()
ключ = StringVar()
режим = StringVar()
Результат = StringVar()
Определить функцию Кодировать() который принимает ключ для кодирования и декодирования вместе с сообщением. Определите пустой список и повторите до длины сообщения. Установите индекс ключа как модуль операции и сохраните его значение в переменной key_c. Использовать порядок() чтобы получить значение Unicode символа и использовать чр() чтобы получить символ, представляющий указанное значение.
Добавьте это значение в список. Соедините каждый элемент списка с пустой строкой и используйте кодировать() метод для возврата версии строки в кодировке utf-8. base64.urlsafe_b64encode() метод кодирует этот ввод и заменяет - на + и _ на /.
дефКодировать(ключевое сообщение):
код = []для я в диапазон (длина (сообщение)):
key_c = ключ [i% len (ключ)]
enc.append (chr((ord (сообщение [i]) + ord (key_c)) % 256))
возвращаться base64.urlsafe_b64encode("".join (enc).encode()).decode()
Определить функцию Декодировать() который принимает ключ для кодирования и декодирования вместе с сообщением. Определите пустой список и расшифруйте сообщение. Итерируйте до длины сообщения и установите модуль операции как индекс и сохраните его значение в key_c. Добавьте символ декодирования строкового сообщения Unicode, как показано ниже. Вернуть декодированную строку.
дефРасшифровать(ключевое сообщение):
дес = []
сообщение = base64.urlsafe_b64decode (сообщение).decode()для я в диапазон (длина (сообщение)):
key_c = ключ [i% len (ключ)]
dec.append (хр((256 + ord (сообщение[i]) - ord (key_c)) % 256))
возвращаться"".присоединиться (дек)
Определить функцию Режим() который получает режим, введенный пользователем в виджете Entry, и вызывает соответствующую функцию в соответствии с выбором. Если пользователь не вводит допустимый ответ, отобразите сообщение об ошибке.
дефРежим():
если (режим.получить() == 'Э'):
Result.set (Кодировать (key.get(), Text.get())))
Элиф (режим.получить() == 'Д'):
Result.set (Декодировать (key.get(), Text.get())))
еще:
Результат.набор(«Неверный режим»)
Определить функцию Выход() убить и завершить интерпретатор, работающий в фоновом режиме. Определите функцию Reset() для очистки содержимого поля ввода.
дефВыход():
корень.уничтожить()
дефПерезагрузить():
Текст.набор("")
ключ.набор("")
режим.установить("")
Результат.набор("")
Определите виджеты Label и Entry для сообщения, ключа, режима и текста. Укажите родительское окно, в которое вы хотите их поместить, стиль шрифта, текст и цвет фона. Также установите координаты для их организации.
Метка (корень, шрифт='Arial 17 полужирный', текст ='Сообщение', фг='черный', бг="аква").место (х=60, у =100)
Запись (корень, шрифт='ариал 15', textvariable=текст, bg='белый').место (х=450, у =100)Метка (корень, шрифт='Arial 17 полужирный', текст ='Ключ', фг='черный', бг="аква").место (х=60, у =130)
Запись (корень, шрифт='ариал 15', текстовая переменная = ключ, bg ='белый').место (х=450, у =130)Метка (корень, шрифт='Arial 17 полужирный', текст =«Режим (E-кодирование, D-декодирование)», фг='черный', бг="аква").место (х=60, у =160)
Запись (корень, шрифт='ариал 15', текстовая переменная = режим, bg ='белый').место (х=450, у =160)
Метка (корень, шрифт='Arial 17 полужирный', текст ='Текст', фг='черный', бг="аква").место (х=60, у =190)
Запись (корень, шрифт='Arial 15 полужирный', textvariable=Результат, bg='белый').место (х=450, у =190)
Точно так же определите три кнопки для просмотра результата, сброса полей и остановки программы. Кнопки имеют специальный параметр, называемый командой, который принимает функцию и выполняет ее по щелчку.
Кнопка (корень, шрифт='Arial 15 полужирный', текст ='Результат', padx=2, бг='Светло-серый', команда=режим).место (х=100, у =240)
Кнопка (корень, шрифт='Arial 15 полужирный', текст ='Перезагрузить', ширина =6, команда=Сброс, БГ='Зеленый', padx=2).место (х=300, у =240)
Кнопка (корень, шрифт='Arial 15 полужирный', текст ='Останавливаться', ширина =6, команда=Выход, бг='Красный', padx=2, пэди =2).место (х=500, у =240)
основной цикл () Функция сообщает Python запустить цикл событий Tkinter и прослушивать события (например, нажатия кнопок), пока вы не закроете окно.
корень.mainloop()
Кодировщик/декодер сообщений в действии
При запуске программы программа отображает окно, в котором вы должны ввести сообщение, ключ и режим. При выборе режима кодирования с ключом 2009 появляется сообщение Используйте превращается в f8KRwpvCnlLChcKjwp5Sf8KW.
Точно так же, копируя закодированное сообщение и вставляя его обратно на вход для декодирования с тем же самым, вы получаете исходное сообщение обратно.
Кибербезопасность с использованием Python
Вы можете использовать Python для написания сценариев, которые автоматизируют проверки безопасности, мониторинг сетей и поиск уязвимостей. Вы можете использовать его для создания надежных приложений, которые используют аутентификацию, чтобы снизить вероятность того, что злоумышленник скомпрометирует ваши данные.
Эксперты по кибербезопасности часто используют Python для создания брандмауэров веб-приложений для мониторинга приложения. Они могут выполнять анализ обнаружения угроз с помощью машинного обучения. Благодаря этой архитектуре намного проще создавать собственные тесты на проникновение и проверять протоколы безопасности.