kyle
1/20/2018 - 4:25 AM

장고의 Secret Key 를 이용한 암호화

장고의 Secret Key 를 이용한 암호화

"""
This Script needs django and pycrypto.
If you want to use this, just call encode(wanna_crypto_text) or decode(encoded_text).

When your secret key changed, you can't decode encoded text before changed, so becareful.
"""

import hashlib
from Crypto.Cipher import AES
import base64
from django.conf import settings

secret_key = hashlib.sha256(settings.SECRET_KEY.encode()).digest()
block_size = 32
pedding = '|'


def encode(target):
    aes = AES.new(secret_key)
    target = pad(target)
    after = aes.encrypt(target)
    based = base64.b64encode(after)
    return based.decode()


def decode(target):
    based = base64.b64decode(target)
    aes = AES.new(secret_key)
    after = aes.decrypt(based)
    return unpad(after)


def pad(s):
    return s + (block_size - len(s) % block_size) * pedding


def unpad(s):
    return s.decode().rstrip('|')