-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcrypto.py
More file actions
51 lines (38 loc) · 1.11 KB
/
Copy pathcrypto.py
File metadata and controls
51 lines (38 loc) · 1.11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import Crypto.Cipher.AES
import base64
from random import Random
key = "aEN0eGE2M05EZ0N2ajJVMQ=="
def _build_cipher(key, iv):
"""Make a 128bit AES CBC encode/decode Cipher object.
Padding is handled internally."""
return Crypto.Cipher.AES.new(key, IV=iv)
def encryptor(key):
"""Simple symmetric key encryption."""
key = base64.b64decode(key)
iv = '\0' * 16
def encrypt(data):
cipher = _build_cipher(key, iv)
# Must pad string to multiple of 16 chars
padding = (16 - len(data) % 16) * " "
v = cipher.encrypt(data + padding)
del cipher
v = base64.b64encode(v)
return v
return encrypt
def decryptor(key):
"""Simple symmetric key decryption."""
key = base64.b64decode(key)
iv = '\0' * 16
def decrypt(data):
data = base64.b64decode(data)
cipher = _build_cipher(key, iv)
v = cipher.decrypt(data).rstrip()
del cipher
return v
return decrypt
def encrypt(data):
global key
return encryptor(key)(data)
def decrypt(data):
global key
return decryptor(key)(data)