Что такое криптография?
Это процесс обеспечения сообщения/информации для связи между отправителем и приемником.
Обычные условия:
- Обычный текст: это сообщение/информация в читаемой форме.
- Шифр текста: он формируется путем применения криптографических алгоритмов на простом тексте. Это не в читаемой форме и не может быть легко понята.
- Ключ: Это вариабельное значение, используемое в процессе шифрования и дешифрования.
Типы криптографии
- Симметричный ключ криптография: тот же ключ используется для шифрования и дешифрования.
- Криптография асимметричной ключей: другой ключ используется для шифрования и дешифрования. Пара ключей используется, известна как государственный и закрытый ключ.
Что такое хеширование?
Это методика криптографии, которая преобразует простой текст в уникальную хеш-значение. Обычно хэш-строка имеет фиксированную длину, не зависящую от длины простого текста. Значение хеша не может быть изменено, спроектировано в простом тексте.
Зная наши библиотеки 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”