📚
[CTF][入門] Python3環境を構築し、PyCryptodomeでAES encode/decode を行う
環境
- MacOS BigSur 11.6
- Visual Studio Code
- Python 3.7.7
環境構築
- pycryptodomeをインストールします
pip install pycryptodome
以下のエラーが出ましたが、私の環境では、以前導入したAnacondaと競合しているみたいでした。
参考記事より、 conda uninstall crypto
のコードを実行することで対応しました。
-
VSCodeの環境設定にて、Default Interpreter Path をpython3にする
-
VSCodeでコードを実行する
実行コード
import json
from base64 import b64encode, b64decode
from Crypto.Cipher import AES
header = b'header'
data = b'kyo no bangohan ha hanba-gu'
key = b'16bytes_key12345'
cipher = AES.new(key, AES.MODE_EAX)
ciphertext, tag = cipher.encrypt_and_digest(data)
json_k = [ 'nonce', 'header', 'ciphertext', 'tag' ]
json_v = [ b64encode(x).decode('utf-8') for x in (cipher.nonce, header, ciphertext, tag) ]
result = json.dumps(dict(zip(json_k, json_v)))
print(result)
b64 = json.loads(result)
jv = { k:b64decode(b64[k]) for k in json_k }
cipher_d = AES.new(key, AES.MODE_EAX, nonce=jv["nonce"])
text_d = cipher_d.decrypt_and_verify(jv['ciphertext'], jv['tag'])
print(text_d)
% python3 AES.py
{"nonce": "djAXMQkMXkmNY05M69qlSg==", "header": "aGVhZGVy", "ciphertext": "XTkI3vXh3wnk110dcsIEsnuCNOtXqnJLUIpl", "tag": "0adH9gDav2DRof/iVmLkmQ=="}
b'kyo no bangohan ha hanba-gu'
参考
Discussion