Рубрики
Без рубрики

Криптография в Python – пошаговая реализация

Криптография в Python – это искусство реализации шифрования и дешифрования сообщений для обеспечения секретности переданных сообщений …

Автор оригинала: Pankaj Kumar.

Здравствуйте, читатели. Хотите попробовать криптографию в Python? Как ребенок, я любил читать книги о том, как зашифровать и расшифровать секретные сообщения. Так что здесь я приносим вам некоторые интересные реализации криптографии в Python. Давайте начнем.

Что такое криптография?

Криптография защищает данные и переписку с использованием кодов. Таким образом, его можно интерпретировать и доступны только определенным лицам, которым предназначена информация.

Таким образом избежать несанкционированного доступа. «Префикс« Crypt »означает« зашифрованные », и графический суффикс означает чтение«.

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

Эти алгоритмы генерируют криптографические ключи, цифровая подпись, аутентификация по защите данных, просмотр Интернета и конфиденциальные транзакции, такие как кредитные карты и транзакции дебетовых карт.

Каковы особенности хороших криптографических алгоритмов?

  • Конфиденциальность : Информация доступна только для предполагаемого пользователя и никоим другом.
  • Полнота : Информация не может быть изменена между отправителем и предполагаемым получателем в хранении или передаче без какого-либо дополнения к обнаруженной информации.
  • Не отвергая : На более позднем моменте создатель/отправитель данных не отвергает его или ее намерение отправлять информацию.
  • Аутентификация : Это подтверждает личность отправителя и получателя. Детали проверены, а также место назначения/происхождения.

Типы криптографии

  1. Симметричный ключ : Это схема шифрования, где один универсальный ключ используется отправителем и получателем сообщений для шифрования и расшифровки сообщений. Схемы симметричных ключей быстрее и проще, но проблема в том, что безопасно, отправитель и получатель должны куда-нибудь поменять ключ. Метод шифрования данных (DE) является наиболее распространенным симметричным ключом криптографической системы.
  2. Функции хэши : В этом алгоритме любого ключа не используют. Значение хеша с фиксированным длиной вычисляется в соответствии с простым текстом, что затрудняет извлечение содержания простого текста. Хеш-функции используются многими операционными системами для шифрования паролей.
  3. Асимметричный ключ : Информация зашифрована и расшифрована с использованием пары клавиш. Для шифрования используется открытый ключ, и для дешифрования используется закрытый ключ. Частный ключ и открытый ключ отделен. И если кто-то знает открытый ключ, Предназначенный получатель будет только расшифровать его, потому что он знает частный ключ сам.

Реализация криптографии в Python с Fernet

Рамки, которые я сначала собираюсь представить сегодня, называется Fernet. Это Симметричный ключ Техника шифрования.

1. Установите Fernet

Мы можем просто использовать Python Pip для установки модуля Fernet в нашу систему:

!pip install cryptography
from cryptography.fernet import Fernet

2. Создать ключи шифрования

Мы можем напрямую использовать функцию Fernet:

key = Fernet.generate_key()

Мы также можем создать наш собственный ключ, используя случайную функцию

import base64
import os
base64.urlsafe_b64encode(os.urandom(32))

И тогда мы назовем функцию Fernet на ключ.

f = Fernet(key)

3. Зашифруйте ваши данные

Теперь мы готовы шифровать ваши данные:

token = f.encrypt(b"Meet me at 9pm. The bus stop. Bring the case.")
print(token)

Как вы можете видеть из полученного токена:

b'gAAAAABfw08v4HVeS3X4WzIEU3NcIfGUCoFQ82XTNPSipSj0UGlYK8mljcDHzubXPN4yhyF3gAANzB5829rQ955GX-t52pg97DLnfhofJKLWvuGIAnUFRVKOfvQggn7VQPbaaciVkS1R'

Без ключа вышеперечисленные данные являются полными неразборчивыми. И вот, злонамеренный пользователь, пытающийся получить информацию о информации, будет застрять без ключа.

4. Используя пароли для криптографии в Python

Мы также можем использовать определенные пароли, а не спасать случайно генерируемые токены.

Итак, для этого мы должны попасть в Примитивы , что немного опасно и может быть использовано неправильно.

Они требуют принятия решений и имеющие углубленные знания о криптографических концепциях на работе.

Но следуйте этим коде ниже, и вы должны быть в порядке:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC

Теперь мы указываем пароль и генерируем случайную байтовую последовательность:

password = b"journaldev"
salt = os.urandom(16)
print(salt)

Что дает нам:

b'\x12\x03\xb4\xeaN\xb0\x19\x98\x83\xb42\xe0\xa71\xfb\xd5'

Тогда мы используем KDF Чтобы повторить 100k раз, используя алгоритм хеширования, как SHA256, чтобы получить ключ:

kdf = PBKDF2HMAC(algorithm=hashes.SHA256(),
                 length=32,
                 salt=salt,
                 iterations=100000,
                 )

Нам нужно использовать этот ключ для шифрования и расшифровки.

key = base64.urlsafe_b64encode(kdf.derive(password))
print(key)

дает нам:

b'hjguwTLr2E2zIRHrI8a0dDXBSRel3YoKSx2uP5ruzX0='

5. расшифровывающий текст

Как только получатель получит сообщение, шаги для расшифровки текста просты. Итак, вы начинаете с входом в клавишу в объекте Fernet и используете функцию Decrypt (), как показано ниже:

f = Fernet(#enter your key here)
f.decrypt(token)

Конечно, вы можете отправлять секретные сообщения своим друзьям. Но вместо этого вы можете комбинировать это с приложениями Thatbot или обмена сообщениями, чтобы иметь безопасную связь в реальном времени.

Завершение примечания

Мы надеемся, что вам понравилось прочитать статью и получили много информации от нее! Каковы ваши следующие шаги сейчас? Если вы рисковатете на машинном обучении, не забудьте проверить наши начинающие руководство по изучению машины здесь.

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

Оставайтесь настроиться на большее руководство на Python!