次の 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 サイトの他の関連記事を参照してください。