Python でパスワードで保護された文字列を安全に暗号化するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-22 22:27:02
オリジナル
149 人が閲覧しました

How Can I Securely Encrypt Password-Protected Strings in Python?

パスワードで保護された文字列の安全な暗号化

問題:

Python には組み込みのパスワードを使用して文字列を暗号化および復号化するメカニズム。これは、強力なセキュリティ対策なしでデータの難読化を必要とするシナリオでは問題となる可能性があります。

解決策:

暗号などの暗号ライブラリは、安全な暗号化スキームを提供します。

対称キー暗号化に Fernet を使用する

Fernet は、暗号化を使用するためのベスト プラクティス レシピです。 AES CBC 暗号化と HMAC 署名、タイムスタンプ、バージョン情報を組み合わせてデータを保護します。

<code class="python">from cryptography.fernet import Fernet

# Generate a random 32-byte key (securely store it)
key = Fernet.generate_key()

# Encrypt and decrypt messages using the key
def encrypt(message, key):
    return Fernet(key).encrypt(message.encode())

def decrypt(token, key):
    return Fernet(key).decrypt(token).decode()</code>
ログイン後にコピー

代替アプローチ:

データの隠蔽:

データの整合性が問題でない場合は、base64 エンコードを使用して隠蔽できます。

<code class="python">import base64

def obscure(data):
    return base64.urlsafe_b64encode(data)

def unobscure(obscured):
    return base64.urlsafe_b64decode(obscured)</code>
ログイン後にコピー

データの整合性:

HMAC 署名キーとハッシュ アルゴリズムを使用して署名を計算することで、データの整合性を確保できます。

<code class="python">import hmac
import hashlib

def sign(data, key, algorithm=hashlib.sha256):
    return hmac.new(key, data, algorithm).digest()

def verify(signature, data, key, algorithm=hashlib.sha256):
    return hmac.compare_digest(expected, signature)</code>
ログイン後にコピー

整合性のある暗号化に AES-GCM を使用

Fernet と同様に、AES- GCM は、ガロア / カウンタ モード ブロック暗号を使用して暗号化と整合性を提供します。

<code class="python">from cryptography.hazmat.primitives.ciphers import Cipher, algorithms, modes
from cryptography.hazmat.backends import default_backend

def aes_gcm_encrypt(message, key):
    # ... (Implementation omitted for brevity)

def aes_gcm_decrypt(token, key):
    # ... (Implementation omitted for brevity)</code>
ログイン後にコピー

以上がPython でパスワードで保護された文字列を安全に暗号化するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!