ホームページ > バックエンド開発 > Python チュートリアル > Python による対称データ暗号化

Python による対称データ暗号化

Susan Sarandon
リリース: 2025-01-04 10:58:35
オリジナル
541 人が閲覧しました

Symmetric data encryption with Python

次の pikoTutorial へようこそ!

Python で対称暗号化を実行する最も簡単な方法の 1 つは、暗号化モジュールの Fernet アルゴリズムを使用することです。コマンドでインストールしてみましょう:

pip install cryptography
ログイン後にコピー

暗号化モジュールが利用可能になったので、最初の暗号化スクリプトを作成しましょう:

# import Fernet
from cryptography.fernet import Fernet
# Generate a key
key = Fernet.generate_key()
# Create a Fernet instance providing the generated key
fernet = Fernet(key)
# Encrypt the data
data = b'Some secret data'
encrypted_data = fernet.encrypt(data)
# Decrypt the data
decrypted_data = fernet.decrypt(encrypted_data)
print(f"Decrypted text: {decrypted_data.decode()}")
ログイン後にコピー

初心者向けの注意: キーはデータの暗号化と復号化の両方で必要となるため、毎回新しいキーを生成することはできません。データを暗号化した後、キーを保存する必要がありますが、キーはデータを復号化できるものであるため、安全な方法で保存することを忘れないでください。

上記の例で生成されたキーは、ランダムなバイトで構成されています。このようなキーは非常に安全ですが、多くの場合、暗号化をパスワード ベースにする必要があります。パスワードとは、人間が容易に理解でき、ユーザーによって入力として動的に提供されるフレーズを意味します。以下に、入力としてユーザーからパスワードを取得する方法と、それを暗号化キーに変換する方法を示す Python コードを示します。

# import utility for Base64 encoding
import base64
# import Fernet
from cryptography.fernet import Fernet
# import getpass for secure input reading
from getpass import getpass
# read plain text password
plain_text_password: str = getpass(prompt='Password: ')
# Fernet requires 32 byte key, so the password also must have 32 characters
if len(plain_text_password) != 32:
    raise RuntimeError(f'Password length must be equal 32!')
# Encode plain text password to ASCII bytes
password_ascii: bytes = plain_text_password.encode('ascii')
# Fernet requires key to be url-safe base64-encoded
key: bytes = base64.urlsafe_b64encode(password_ascii)
# Create a Fernet instance providing the generated key
fernet = Fernet(key)
# Encrypt the data
data = b'Some secret data'
encrypted_data = fernet.encrypt(data)
# Decrypt the data
decrypted_data = fernet.decrypt(encrypted_data)
print(f"Decrypted text: {decrypted_data.decode()}")
ログイン後にコピー

上級者向けのメモ: この pikoTutorial は対称暗号化に Fernet を使用する方法に焦点を当てているため、暗号化キーの作成が簡素化されます。実際には、ユーザーが提供したパスワードから暗号化キーを作成する必要がある場合は、PBKDF2HMAC のようなキー導出関数を使用する必要があります。

以上がPython による対称データ暗号化の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート