오늘 보안 알고리즘에 약간의 변경을 가하기로 결정되어
RSA와 함께 AES를 섞어 쓰기로 결정 되었다.
때문에 python으로 AES 관련 코드 추가 작업을 진해하였다.

이미 M2Crypto를 쓰고 있으니
따로 암호화 모듈을 추가할 필요 없이 이를 이용했다.
M2Crypto를 보면서 문서화가 좀 거지같다는 생각을 했는데,
이번에도 역시...
그나마 테스트 케이스라도 있어서 다행이었다.
휴~

처음에는 AES 128bit CBC로 할까 했다가
IV가 필요없는 AES 128bit ECB로 결정...

아래 코드는 임의의 128bit 키를 만들어 짧은 평문을 암/복호화 한다.
 

import os
import cStringIO
from M2Crypto import EVP

skey = os.urandom(16)
plaintext = '12345'

# encrypt

aes = EVP.Cipher(alg='aes_128_ecb', key=skey, iv='', op=1)

buf = cStringIO.StringIO()

buf.write(aes.update(plaintext))

buf.write(aes.final())

ciphertext = buf.getvalue()

# decrypt

aes = EVP.Cipher(alg='aes_128_ecb', key=skey, iv='', op=0)

buf = cStringIO.StringIO()

buf.write(aes.update(ciphertext))

buf.write(aes.final())

plaintext = buf.getvalue() 

 
|

ghilbut's Blog is powered by Daum & tistory