Crypto(AES) 모듈 사용

파이썬으로 AES encrypt / decrypt 수행하려면 crypto 모듈을 사용해야 하며, 이것은 pip로 설치가 가능하다.

$ pip3 install pycryptodome

crypto 모듈을 설치하려면 윈도우, 리눅스 환경 구분이 없이 모두 컴파일러가 설치되어 있어야 한다. 만약 컴파일러가 설치되어 있지 않다면 pycryptodome 설치시 에러가 발생한다.

 

윈도우에서 컴파일러 설치는 아래 MS 홈페이지에서 MS Build Tools 2015 버전을 다운받아 설치할 수 있다.

 

Microsoft Build Tools 2015

Microsoft Build Tools 2015는 관리되는 응용 프로그램 빌드에 필수적인 도구를 제공합니다.

www.microsoft.com

우분투는 개발 패키지인 build-essential을 설치하면 컴파일러가 함께 설치된다.

$ sudo apt install build-essential

컴파일러 및 crypto 모듈을 설치하였다면, AES encrypt / decypt 모듈을 아래 코드와 같이 간단히 사용할 수 있다.

from Crypto.Cipher import AES

enc_key  = bytes([x for x in range(16)])
init_vec = bytes([0x00 for _ in range(16)])

with open('encrypted_data.bin', 'rb') as f:
    encrypted_data = f.read(64)
    plaintext_data = AES.new(enc_key, AES.MODE_CBC, init_vec).decrypt(encrypted_data)
    
    for i, b in enumerate(plaintext_data):
        print('0x{:02X}'.format(b), end=' ')
        if (i % 0x10) == 0x0F: print()

데이터를 인크립트 하려면 decrypt() 함수 대신 encrypt() 함수를 호출하면 된다.