対称キー暗号化: 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'
Alternatives:
Obscuring:曖昧さは必要ですが、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: 注意: 安全ではありません! 現実のアプリケーションには推奨されません。
base64 をインポート
キー = Secrets.token_bytes(32)
ciphertext = aes_ecb_encrypt(b'Data', key) # Base64 でエンコードされた暗号文
decrypted_data = aes_ecb_decrypt(暗号文, キー) # b'データ'
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3