Тест-драйв профессии Python-разработчик

Как работает шифрование и дешифрование строки python

Аватар пользователя Ivan Mamtsev
Ivan Mamtsev
21 августа 2024

Для шифрования исходный текст (plain text) переводится в зашифрованный текст (ciphertext) с помощью алгоритма и ключа. Для дешифрования зашифрованный текст переводится обратно в исходный, используя тот же алгоритм и ключ. Основные инструменты это алгоритм шифрования, например, AES, RSA, ключ шифрования и сами функции для шифрования и дешифрования.

На практике же, мы можем использовать библиотеки как cryptography.

from cryptography.fernet import Fernet

key = Fernet.generate_key()
fernet = Fernet(key)

plain_text = 'python'
encrypted_text = fernet.encrypt(plain_text.encode())
decrypted_text = fernet.decrypt(encrypted_text).decode()
0 0
Аватар пользователя Игорь Гахов
Игорь Гахов
17 октября 2022

Есть ряд библиотек, позволяющие нам шифровать данные на Python, например cryptography:

from cryptography.fernet import Fernet

key = Fernet.generate_key()

f = Fernet(key)

token = f.encrypt(b"Это секретное сообщение.")  # шифрование данных
token
# ...
f.decrypt(token)  # дешифрование данных
'Это секретное сообщение.'

Подробнее можно почитать в документации библиотеки Cryptography.

Также можете обратить внимание на Simple Crypt, Cryptocode и RSA.


Стоит также упомянуть про hashlib, который входит в стандартную библиотеку и реализует общий интерфейс для множества различных безопасных алгоритмов хеширования и дайджеста сообщений.

Конструкторы для алгоритмов хэширования, которые всегда присутствуют в этом модуле являются md5(), sha1(), sha224(), sha256(), sha384(), и sha512(). Если вам нужны хеш-функции adler32 или crc32, то они доступны в модуле zlib.

Пример:

import hashlib

hash = hashlib.sha256()

hash.update(b"Nobody inspects")
hash.update(b" the spammish repetition")

hash.hexdigest()  # '031edd7d41651593c5fe5c006fa5752b37fddff7bc4e843aa6af0c950f4b9406'
hash.digest_size  # 32
hash.block_size  # 64

Разберем строки:

1) hash.update() обновляет хеш-объект с помощью байтового объекта. Повторные вызовы эквивалентны одиночному вызову с объединением всех аргументов: m.update(a); m.update(b) эквивалентно m.update(a+b);

2) hash.hexdigest() возвращает дайджест как значение строки шестнадцатеричных данных;

3) hash.digest_size - размер полученного хеша в байтах;

4) hash.block_size - внутренний размер блока алгоритма хеширования в байтах.

Более подробно можете ознакомиться в документации.

0 0

Есть что добавить? Зарегистрируйтесь

или войдите в аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Курсы по программированию в Хекслете

Backend-разработка

Разработка серверной части сайтов и веб-приложений

Frontend-разработка

Разработка внешнего интерфейса сайтов и веб-приложений и верстка

Создание сайтов

Разработка сайтов и веб-приложений на JS, Python, Java, PHP и Ruby on Rails

Тестирование

Ручное тестирование и автоматизированное тестирование на JS, Python, Java и PHP

Аналитика данных

Сбор, анализ и интерпретация данных на Python

Интенсивные курсы

Интенсивное обучение для продолжающих

DevOps

Автоматизация настройки локального окружения и серверов, развертывания и деплоя

Веб-разработка

Разработка, верстка и деплой сайтов и веб-приложений, трудоустройство для разработчиков

Математика для программистов

Обучение разделам математики, которые будут полезны при изучении программирования

JavaScript

Разработка сайтов и веб-приложений и автоматизированное тестирование на JS

Python

Веб-разработка, автоматическое тестирование и аналитика данных на Python

Java

Веб-разработка и автоматическое тестирование на Java

PHP

Веб-разработка и автоматическое тестирование на PHP

Ruby

Разработка сайтов и веб-приложений на Ruby on Rails

Go

Курсы по веб-разработке на языке Go

HTML

Современная верстка с помощью HTML и CSS

SQL

Проектирование базы данных, выполнение SQL-запросов и изучение реляционных СУБД

Git

Система управления версиями Git, регулярные выражения и основы командой строки

Бесплатные курсы

Бесплатные курсы по тестированию, дата-аналитике, верстке, программированию на Python, Java, PHP и JavaScript.