728x90
반응형
개발을 진행하다보면 특정 데이터에 대해서 암/복호화 하여 사용하는 경우가 있다.
물론 더 복잡하게 Salt / Pepper 암호화 처리를 통해 할 수 있으나, 이번에는 간략하게 Key값을 통한 암/복화를 해보자.
반드시 pycrypto 모듈이 설치 되어 있어야 한다.
# pip를 이용한 pycrypto 설치
$ pip install pycrypto
예제 code )
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import base64
from Crypto import Random
from Crypto.Cipher import AES
BS = 16
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
unpad = lambda s: s[0:-ord(s[-1])]
class AESCipher:
def __init__(self, key):
self.key = key
def encrypt(self, raw):
raw = pad(raw)
iv = Random.new().read(AES.block_size)
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return base64.b64encode(iv + cipher.encrypt(raw))
def decrypt(self, enc):
enc = base64.b64decode(enc)
iv = enc[:16]
cipher = AES.new(self.key, AES.MODE_CBC, iv)
return unpad(cipher.decrypt(enc[16:]))
if __name__ == '__main__':
key = '!01234!5678998765!43210!'
json_str = 'Test'
cipher = AESCipher(key)
encrypted = cipher.encrypt(json_str)
decrypted = cipher.decrypt(encrypted)
print 'Key:: '+key
print 'Enc:: '+encrypted
print 'Dec:: '+decrypted
--------------------------------------------------
Result
Key:: !01234!5678998765!43210!
Enc:: MzVW4mC3r5ajGWO49Lz9Tnp8iXlw2wTtL2Z2q0Jy+dI=
Dec:: Test
728x90
반응형
'+ Development > Python' 카테고리의 다른 글
[Python] Python(파이썬) 현재 실행중인 PID 값 확인 (0) | 2020.01.07 |
---|---|
[Python] pip를 통해 모듈(Module) 업데이트 (2) | 2019.09.24 |
[Python] HTTP - 일반적인 Response Header 파싱 코드(Lv.2) (0) | 2019.08.21 |
[Python] HTTP - 일반적인 Request Header 파싱 코드(Lv.1) (0) | 2019.08.15 |
[Python] regex 값을 dict 로 가져오기 (0) | 2019.08.12 |
댓글