Python - pycryptoメモ

まえがき

セキュリティは大事だと思うので、 暗号処理ライブラリ pycrypto の使い方を知っておく

インストール

pip でインストール

$ pip3 install pycrypto

または、フォークの pycryptodome をインストール

$ pip3 install pycryptodome

pycryptodome は最近も更新されているし (オフィシャルは更新が止まっている?)
wheel も用意されているので windows の場合はこっちを使うと ビルドでハマらないと思われる。

使い方

処理用オブジェクトを生成して、該当メソッドを呼びだす。
内部状態が保持されているので、使い回せない。 そのため、同じ暗号処理を繰り返し行う場合でも都度処理オブジェクトを生成する必要がある。
暗号処理自体の予備知識はNISTとか見る。

サンプル

#!/usr/bin/env python3
# coding: utf-8
"""python script
"""

import Crypto.Cipher.AES as AES


def main():
    """main
    """
    key = b'0123456789abcdef'
    iv = b'0' * 16
    # AES-CBC モードで暗号化
    aes = AES.new(key, AES.MODE_CBC, iv)
    # bytes 型を渡す
    cipher = aes.encrypt('python script000'.encode('ascii'))
    # 使い回せないでのデコード用を新しく用意する
    aes = AES.new(key, AES.MODE_CBC, iv)
    # bytes 型が返る
    plain = aes.decrypt(cipher).decode('ascii')
    print(plain)


if __name__ == '__main__':
    main()

See also