Python の暗号化ライブラリは、データの暗号化と復号化のための包括的なツールキットです。パスワードを使用して文字列を暗号化するには、堅牢な暗号化を提供し、タイムスタンプ、HMAC 署名、base64 エンコードなどの重要な機能を備えた Fernet クラスを利用できます。
<code class="python">from cryptography.fernet import Fernet, FernetException password = 'mypass' fernet = Fernet(password.encode()) encrypted_message = fernet.encrypt(b'John Doe') decrypted_message = fernet.decrypt(encrypted_message) print(encrypted_message) # Encrypted string print(decrypted_message.decode()) # 'John Doe'</code>
Fernet は、複数の暗号化層を適用し、HMAC 署名によるメッセージの整合性を確保することで、暗号化されたデータを安全に保ちます。
Fernet でパスワードを直接使用するのは便利ですが、 、パスワードを使用してキーを生成する方が安全です。このアプローチには、キー導出関数を使用してパスワードとソルトから秘密キーを導出することが含まれます。
<code class="python">import secrets from cryptography.fernet import Fernet from cryptography.hazmat.backends import default_backend from cryptography.hazmat.primitives import hashes from cryptography.hazmat.primitives.kdf.pbkdf2 import PBKDF2HMAC backend = default_backend() salt = secrets.token_bytes(16) # Generate a unique salt password = 'mypass'.encode() # Convert password to bytes kdf = PBKDF2HMAC( algorithm=hashes.SHA256(), length=32, salt=salt, iterations=100000, backend=backend ) key = b64e(kdf.derive(password)) # Derive the secret key fernet = Fernet(key) encrypted_message = fernet.encrypt(b'John Doe')</code>
この方法では、パスワードから導出された強力なキーを使用して暗号化プロセスに追加の保護層を追加することで、セキュリティが強化されます。
Fernet 以外にも、特定の要件に応じて代替手段を検討できます:
Base64 隠蔽: 基本用難読化、base64 エンコードは暗号化なしで使用できます。ただし、これは実際のセキュリティを提供するものではなく、単に隠蔽するだけです。
HMAC 署名: データの整合性が目標の場合は、HMAC 署名を使用してデータが改ざんされていないことを確認します。
AES-GCM 暗号化: AES-GCM は、ガロア/カウンター モード ブロック暗号化を使用して暗号化と整合性保証の両方を提供します。これは Fernet に似ていますが、ユーザー フレンドリーな機能はありません。
以上がPython でパスワードを使用して文字列を安全に暗号化および復号化する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。