LoginSignup
0
0

Python アプリで簡易的な暗号化

Last updated at Posted at 2024-02-14

Python アプリにて「環境変数に設定した鍵を使用してデータを暗号化/復号化したい」場合の手順メモ。

この記事は簡易的な例として手順をまとめたものであり、この手順が安全であることを保証しません。特に鍵を環境変数にそのまま設定することは一般的には好ましくないので、各自よしなにご対応ください。

実装

cryptography を使用して以下のようにする。

crypt.py
from os import getenv

from cryptography.fernet import Fernet

CRYPT_KEY = getenv("CRYPT_KEY").encode()


def encrypt(data: bytes) -> bytes:
    return Fernet(CRYPT_KEY).encrypt(data)


def decrypt(data: bytes) -> bytes:
    return Fernet(CRYPT_KEY).decrypt(data)

使い方

鍵を生成する

from cryptography.fernet import Fernet

print(Fernet.generate_key().decode())  #=> '92CzBgyNP0JnMayKW0kgUTpGnjOVCTRSjpxBAVGBJns='

これを Python アプリの環境変数 CRYPT_KEY に設定しておく。

暗号化

from crypt import encrypt

data = "吾輩は猫である"
data_encrypted = encrypt(data.encode())
print(data_encrypted)  #=> b'gAAAAABlzCJpdEpaoGi4bovGXKldGcuXAl2Ue0hVH52ip_638Whb35jnYHAOOKAZECzF9GB6XYJJMtWGqOCpL1G9LsIdBhBV-Tooegb-0AIlwrGpuSSXcmA='

復号化

from crypt import decrypt

data_encrypted = b'gAAAAABlzCJpdEpaoGi4bovGXKldGcuXAl2Ue0hVH52ip_638Whb35jnYHAOOKAZECzF9GB6XYJJMtWGqOCpL1G9LsIdBhBV-Tooegb-0AIlwrGpuSSXcmA='
data = decrypt(data_encrypted).decode()
print(data)  #=> '吾輩は猫である'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0