Шифрование с симметричным ключом: Fernet
Python имеет надежную криптографическую библиотеку, предлагающую Fernet, безопасную, передовую схему шифрования. Fernet использует шифрование AES CBC, подпись HMAC, а также информацию о версии и метке времени для защиты данных. Рекомендуется сгенерировать ключ с помощью Fernet.generate_key().
from cryptography.fernet import Fernet
key = Fernet.generate_key()
message = 'John Doe'
token = Fernet(key).encrypt(message.encode())
decrypted_message = Fernet(key).decrypt(token).decode() # 'John Doe'
Альтернативы:
Скрытие: Если только необходима неясность, кодировки base64 может быть достаточно. Для безопасности URL-адресов используйте urlsafe_b64encode().
import base64
obscured_message = base64.urlsafe_b64encode(b'Hello world!') # b'eNrzSM3...='
Только целостность: HMAC может обеспечить гарантию целостности данных без шифрования.
import hmac
import hashlib
key = secrets.token_bytes(32)
signature = hmac.new(key, b'Data', hashlib.sha256).digest()
Шифрование AES-GCM: AES-GCM обеспечивает как шифрование, так и целостность без заполнения.
import base64
key = secrets.token_bytes(32)
ciphertext = aes_gcm_encrypt(b'Data', key) # base64-encoded ciphertext and tag
decrypted_data = aes_gcm_decrypt(ciphertext, key) # b'Data'
Другие подходы:
AES CFB: Аналогично CBC без заполнения.
import base64
key = secrets.token_bytes(32)
ciphertext = aes_cfb_encrypt(b'Data', key) # base64-encoded ciphertext and IV
decrypted_data = aes_cfb_decrypt(ciphertext, key) # b'Data'
AES ECB: Внимание: небезопасно! Не рекомендуется для реальных приложений.
import base64
key = secrets.token_bytes(32)
ciphertext = aes_ecb_encrypt(b'Data', key) # base64-encoded ciphertext
decrypted_data = aes_ecb_decrypt(ciphertext, key) # b'Data'
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3