· 8 years ago · Feb 02, 2018, 05:48 PM
1"""
2This Script needs django and pycrypto.
3If you want to use this, just call encode(wanna_crypto_text) or decode(encoded_text).
4
5When your secret key changed, you can't decode encoded text before changed, so becareful.
6"""
7
8import hashlib
9from Crypto.Cipher import AES
10import base64
11from django.conf import settings
12
13secret_key = hashlib.sha256(settings.SECRET_KEY.encode()).digest()
14block_size = 32
15padding = '|'
16
17
18def encode(target):
19 aes = AES.new(secret_key)
20 target = pad(target)
21 after = aes.encrypt(target)
22 based = base64.b64encode(after)
23 return based.decode()
24
25
26def decode(target):
27 based = base64.b64decode(target)
28 aes = AES.new(secret_key)
29 after = aes.decrypt(based)
30 return unpad(after)
31
32
33def pad(s):
34 return s + (block_size - len(s) % block_size) * padding
35
36
37def unpad(s):
38 return s.decode().rstrip('|')