#!/usr/bin/env python35
# -*- coding: utf-8 -*-
# Created by wyy on 2018/3/20 13:48.
import base64
import json
import re
from Crypto.Cipher import AES
#http://tool.chacuo.net/cryptaes
class AESECB:
def __init__(self, key):
self.key = key
self.mode = AES.MODE_ECB
self.bs = 16 # block size
#self.PADDING = lambda s: s + (self.bs - len(s) % self.bs) * chr(self.bs - len(s) % self.bs)只支持英文入参
self.PADDING = lambda s: s + (self.bs - len(s.encode('gbk')) % self.bs) * chr(self.bs - len(s.encode('gbk')) % self.bs)
def encrypt(self, text):
aes = AES.new(str.encode(self.key), self.mode) # ECB模式无需向量iv
#encrypt_aes = aes.encrypt((self.PADDING(text)).encode(encoding="utf-8"))
encrypt_aes = aes.encrypt((self.PADDING(text)).encode(encoding="gbk"))
encrypted_base64 = base64.b64encode(encrypt_aes)
#print(encrypted_base64)
#return str(encrypted_base64, encoding='utf-8')
return encrypted_base64
def decrypt(self, text):
aes = AES.new(str.encode(self.key), self.mode) # ECB模式无需向量iv
text += (len(text) % 4) * '='
encrypt_aes = base64.b64decode(text)
data = aes.decrypt(encrypt_aes)
# 去除解码后的非法字符data.decode()
try:
result = re.compile('[\\x00-\\x08\\x0b-\\x0c\\x0e-\\x1f\n\r\t]').sub('', str(data, encoding='utf-8'))
except Exception:
result = '解码失败,请重试!'
return result
if __name__ == '__main__':
aes = AESECB('1234567890123456')
#print(aes.encrypt('wyy1221wyy1221'))
#print(aes.decrypt('m9RKpQSCrZ6fF7RuPoyNLA=='))
a = str({"mobile":"15950561221"}).replace(' ', '')
b = json.dumps({'mobile':'15950561221'})
print(a)
print(b)
print(aes.encrypt(a))
print(aes.decrypt('EOW+1UQBPF8fb7CQM55ZXZxjbApqYdNLyTFiWsBwEso='))
#!/usr/bin/python
# -*- coding: utf-8 -*-
from Crypto.Cipher import AES
import base64
# str不是16的倍数那就补足为16的倍数
def add_to_16(value='1234567890123456'):
while len(value) % 16 != 0:
value += '\0'
return str.encode(value) # 返回bytes
#http://tool.chacuo.net/cryptaes
#加密方法
def myEncrypt(data):
# 初始化加密器,先进行aes加密
aes = AES.new(add_to_16(), AES.MODE_ECB)
encrypt_aes = aes.encrypt(add_to_16(data))
#用base64编码
encrypted_data = base64.encodebytes(encrypt_aes)
#print(encrypted_data)
print(str(encrypted_data, encoding='utf-8'))
#解密方法
def myDecrypt(encrypted_data):
#优先逆向解密base64成bytes
encrypt_aes = base64.decodebytes(encrypted_data.encode(encoding='utf-8'))
# 初始化加密器,进行aes解密
aes = AES.new(add_to_16(), AES.MODE_ECB)
data = aes.decrypt(encrypt_aes)
#print(data)
print(str(data, encoding='utf-8'))
if __name__ == '__main__':
myEncrypt('abc123def456')
myDecrypt('3/uact5LFrvu4W63QHIvcw==')