

目次
pythonでAES形式で暗号化と復号化する概要
この記事では、pythonを使った暗号化と復号化の方法を説明します。
これによって、パスワードなどAESを使った暗号化を行い保存しておき、処理内でパスワードを使用する際には復号化してパスワードをしようするといった使い方ができるようになります。
pythonでAES形式で暗号化と復号化する前提の環境
AES形式で暗号化と復号化する前提の環境は、下の記事で説明している私の環境と同じ環境で確認しています。
-
-
【python】バージョン確認の方法【→プログラミング初心者向け】
続きを見る
また、レンタルサーバなどのLinuxサーバを使っている場合は、下の記事でプログラミングする環境の作り方を説明しています。
もし、まだプログラムする環境ができていない方は、先にこちらの記事を読んで、プログラミングできる環境をつくることをおすすめします。
-
-
レンタルサーバでプログラミングする方法【→ブログのサーバでできる!】
続きを見る
pythonでAES形式で暗号化と復号化するサンプルプログラム
このサンプルプログラムでは、暗号化と復号化の手順を、それぞれの関数の定義、実行することによって説明します。
ライブラリをインポートする
まず初めに、各種ライブラリをインポートします。
AESを用いた暗号化・復号化に必要なCryptoライブラリを各種モジュールをインポートしています。
from Crypto.Cipher import AES
from Crypto.Hash import SHA256
from Crypto import Random
aesを作成する
次に、暗号化(AES)オブジェクトを作成する手順を説明します。
AES.new()に引数としてはkey(暗号化鍵)、AES.MODE_CFB(暗号化アルゴリズム)、iv(初期化ベクタ)の3つのパラメータを入力しています。
暗号化鍵には、パスワードをSHA256でハッシュした値(256bit)を鍵として利用しています。
また、アルゴリズムを指定する引数としてAES.MODE_CFBを指定しています。初期化ベクタは、乱数生成におけるシード値のようなものです。
def create_aes(password, iv):
sha = SHA256.new()
sha.update(password.encode())
key = sha.digest()
return AES.new(key, AES.MODE_CFB, iv)
暗号化する
次には、暗号化する関数を定義し、暗号化の手順を説明します。
Random.new()によって生成された初期化ベクタivを使って、AESオブジェクトのencrypt()関数を呼び出すことによって暗号化を行います。
def encrypt(decrypted_data, password):
iv = Random.new().read(AES.block_size)
return iv + create_aes(password, iv).encrypt(decrypted_data)
復号化する
ここでは、復号化する関数を定義し、復号化の手順を説明します。
入力されたencrypted_dataから初期化ベクタivと本文のデータに分離します。
最後に、decrypt()関数で復号化を行います。
def decrypt(encrypted_data, password):
iv, cipher = encrypted_data[:AES.block_size], encrypted_data[AES.block_size:]
return create_aes(password, iv).decrypt(cipher)
定義した関数の実行
最後に、例として暗号化鍵の元になるパスワードpasswordと、暗号化対象の文字列s_stringsを題材として、上記で定義した3つの関数の呼び出しを行い、暗号化と復号化の例を記載しています。
if __name__ == '__main__':
password = "tommy1"
s_strings = "secret tommy's sentence."
enc = encrypt(s_strings, password)
print(enc)
dec = decrypt(enc, password)
print(dec)
pythonで業務効率化するその他の方法
この記事では、pythonを使った暗号化と復号化の方法を説明しました。
暗号化と復号化以外にも、pythonには、業務効率化できる手段がたくさんあります。
下記の記事に、普段オフィス環境で使われるツールを使って業務効率化できる方法をまとめていますので、ぜひ合わせて読んで取り組んでみてください。
-
-
【python】業務効率化の方法8選【→周りを出し抜く自動化】
続きを見る