Pythonは多くのライブラリとモジュールを持っており、その中には暗号化とエンコーディングのためのものも含まれています。この記事では、PythonでAES暗号化とBase64エンコーディングを使用する方法について説明します。
AES暗号化とは
AES(Advanced Encryption Standard)は、共通鍵暗号化の一種で、データの保護に広く使用されています。Pythonでは、Crypto.Cipher
モジュールのAES
クラスを使用してAES暗号化を行うことができます。
Base64エンコーディングとは
Base64は、バイナリデータをASCII文字列に変換するエンコーディング方式です。Pythonでは、base64
モジュールを使用してBase64エンコーディングを行うことができます。
PythonでのAES暗号化とBase64エンコーディングの使用例
以下に、PythonでAES暗号化とBase64エンコーディングを使用する例を示します。
from base64 import b64encode, b64decode
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad, unpad
from Crypto.Random import get_random_bytes
# 鍵の作成
def create_key():
key = get_random_bytes(16)
return b64encode(key).decode('utf-8')
# 暗号化する
def encrypt(key, data):
key = b64decode(key)
data = bytes(data, 'utf-8')
cipher = AES.new(key, AES.MODE_CBC)
ct_bytes = cipher.encrypt(pad(data, AES.block_size))
iv = b64encode(cipher.iv).decode('utf-8')
ct = b64encode(ct_bytes).decode('utf-8')
return ct, iv
# 復号化する
def decrypt(key, iv, ct):
key = b64decode(key)
iv = b64decode(iv)
ct = b64decode(ct)
cipher = AES.new(key, AES.MODE_CBC, iv)
pt = unpad(cipher.decrypt(ct), AES.block_size)
return pt.decode('utf-8')
password = 'password'
# 新しい鍵の作成
key = create_key()
# 新しい鍵のprint
print(key)
# 暗号化する
ct, iv = encrypt(key, password)
# 暗号化したパスワードのprint
print(ct)
# hash値のprint
print(iv)
# 復号化する
pt = decrypt(key, iv, ct)
# 結果確認のため、復号したものをprint
print(pt)
このコードは、新しい鍵を作成し、その鍵を使用してパスワードを暗号化し、その後で暗号化されたパスワードを復号化するという流れを示しています。
以上がPythonでAES暗号化とBase64エンコーディングを使用する方法の一例です。Pythonの豊富なライブラリとモジュールを活用することで、さまざまな暗号化とエンコーディングのタスクを簡単に実行することができます。