Python 環境で暗号認証機能を実装する場合に利用できるライブラリです.
PyCryptodome は,Python 言語のための様々な暗号認証機能を提供するモジュールから構成されるパッケージです. (PyCryptodome)
基本的には Python で記述されていますがブロック暗号のような性能的にクリティカルな処理は C 言語で記述されています.
PyCryptodome は PyCrypto (Python Cryptography Toolkit) から分岐したパッケージで幾つかの拡張がなされています.API はほぼ PyCrypto と同じですが,一部違いもあります.
PyCryptodome の主な機能 (サポートアルゴリズム) は以下のとおりです (Ver. 3.7.0).
[] 内は非推奨アルゴリズムであり,過去の互換性のため残されているものです.
PyCryptodome の API ドキュメントは こちら にあります.
この API を使った幾つかのプログラム例を示します.
from Crypto.Hash import SHA256 hash_object = SHA256.new(data=b'First') hash_object.update(b'Second') print(hash_object.digest())
import Crypto.Cipher.AES as AES import Crypto.Util.Padding as PAD ptext = 'Sample plain text data' key = b'0123456789abcdef' iv = b'0' * 16 aes = AES.new(key, AES.MODE_CBC, iv) data1 = PAD.pad(ptext.encode('ascii'), 16, 'pkcs7') cipher = aes.encrypt(data1) aes = AES.new(key, AES.MODE_CBC, iv) data2 = aes.decrypt(cipher) plain = PAD.unpad(data2, 16, 'pkcs7') print(plain.decode('ascii'))
from Crypto.PublicKey import RSA key = RSA.generate(2048) private_key = key.export_key() file_out = open("private.pem", "wb") file_out.write(private_key) public_key = key.publickey().export_key() file_out = open("public.pem", "wb") file_out.write(public_key)