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

Криптография с использованием Python.

Что такое криптография? Это процесс обеспечения сообщения / информации для … Помечено Python, криптография, хеширование.

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

Это процесс обеспечения сообщения/информации для связи между отправителем и приемником.

Обычные условия:

  • Обычный текст: это сообщение/информация в читаемой форме.
  • Шифр текста: он формируется путем применения криптографических алгоритмов на простом тексте. Это не в читаемой форме и не может быть легко понята.
  • Ключ: Это вариабельное значение, используемое в процессе шифрования и дешифрования.

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

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

Что такое хеширование?

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

Зная наши библиотеки Python

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

  • RSA: Он включает в себя чистую реализацию алгоритма RSA. Мы будем использовать его для демонстрации асимметричной ключевой криптографии.

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

Установка библиотек ….

pip install cryptography
pip install rsa

В случае любой ошибки попробуйте запустить

python -m pip install --upgrade pip

Симметричная ключевая криптография

Fernet: Это модуль внутри пакета криптографии. Он гарантирует, что сообщение, зашифрованное его, не может быть манипулировано или прочитать без ключа.

Код

from cryptography.fernet import Fernet

plain_text = "Hello World"


# generating random key 
key = Fernet.generate_key()

# creating object of Fernet class
fernet = Fernet(key)

# encryption takes place using encrypt method
cipher = fernet.encrypt(plain_text.encode())

print("original string: ", plain_text)
print("encrypted string: ", cipher)

# decryption takes place using decrypt method
newMessage = fernet.decrypt(cipher).decode()

print("decrypted string: ", newMessage)

Выход

original string:  Hello World
encrypted string:  b'gAAAAABhVfD58m85tEJe3U4AQRbhIXFULXdfFGZnzS7IHS6aH8VGC4il3HSTF2tMjQ7_WJJdUAcAHuNV27ravfvOFOPv1hsQYg=='
decrypted string:  Hello World

Криптография асимметричной ключей

Алгоритм RSA является асимметричной криптографией алгоритм. Он использует разную клавишу для шифрования и дешифрования I.e Public и Public.

Код

import rsa

#newkeys method will generate both the keys
public_key, private_key = rsa.newkeys(512)

plain_text = "Hello World"

#encryption takes place using encrypt method using public key
#normal string should be encoded into byte string
#using encode method
cipher = rsa.encrypt(plain_text.encode(),public_key)

print("original string: ", plain_text)
print("encrypted string: ", cipher)

#decryption takes place using decrypt method using private key
#after that string is converted from byte stream to string
#using decode method
newMessage = rsa.decrypt(cipher, private_key).decode()
print("decrypted string: ", newMessage)

Выход

original string:  Hello World
encrypted string:  b')e`\x00\xd7\xdb\xce\xae)\x93 \x06\x8b\x9a\x08\x90\xca`\xbd\x0e\xcc>72$\x08_\x0b\x9a6\x93\xf8\xc4\x1f\x8cv\xf7\xd1\x8e\x84\xb4\xd0\xb1\nPj\xee\xc5\x14\x88B\xd4{\x89[%\xab}s\xdcY\x05\x93\xba'
decrypted string:  Hello World

Хеширование

Сообщение Diagest Algorithm 5 (MD5) – это криптографический хеш-алгоритм, который можно использовать для создания 128-битного строкового значения из строки произвольной длины.

Безопасный хеш-алгоритм (SHA), используемый для хеширования данных и файлов сертификатов. Это более безопасно, чем MD5. Он имеет 6 типов, а именно SHA-0, SHA-1, SHA-224, SHA-256, SHA-384 и SHA-512.

Код

import hashlib

plain_text = "Hello World"

#MD5 Hashing takes place
md5Hash  = hashlib.md5(plain_text.encode())
#Hexidecimal string is generated
hexValue1 = md5Hash.hexdigest()

print("MD5 Hash Value:",hexValue1)

#SHA Hashing takes place
shaHash = hashlib.sha1(plain_text.encode())
#Hexidecimal string is generated
hexValue2 = shaHash.hexdigest()

print("SHA Hash Value:",hexValue2)

Выход

MD5 Hash Value: b10a8db164e0754105b7a99be72e3fe5
SHA Hash Value: 0a4d55a8d778e5022fab701977c5d840bbc486d0

Оригинал: “https://dev.to/prashiknikumbe/cryptography-using-python-29im”