対称キー暗号化: Fernet
Python には、安全でベストプラクティスの暗号化スキームである Fernet を提供する堅牢な暗号化ライブラリがあります。 Fernet は、AES CBC 暗号化、HMAC 署名、バージョンおよびタイムスタンプ情報を使用してデータを保護します。 Fernet.generate_key() を使用してキーを生成することをお勧めします。
<code class="python">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'</code>
代替案:
難読化: 難読化のみが必要な場合は、base64エンコードで十分です。 URL の安全性を確保するには、urlsafe_b64encode() を使用します。
<code class="python">import base64 obscured_message = base64.urlsafe_b64encode(b'Hello world!') # b'eNrzSM3...='</code>
整合性のみ: HMAC は暗号化なしでデータ整合性保証を提供できます。
<code class="python">import hmac import hashlib key = secrets.token_bytes(32) signature = hmac.new(key, b'Data', hashlib.sha256).digest()</code>
AES- GCM 暗号化: AES-GCM は、パディングなしで暗号化と整合性の両方を提供します。
<code class="python">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'</code>
その他のアプローチ:
AES CFB: パディングのない CBC に似ています。
<code class="python">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'</code>
AES ECB: 注意: 安全ではありません! 実際のアプリケーションには推奨されません。
<code class="python">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'</code>
以上が高度な暗号化技術を使用してデータ保護を強化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。