版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_38250126/article/details/82221690
准备工作:
1、安装python2.7.12,步骤略 下载链接(链接:https://pan.baidu.com/s/1OA7UxQl47rKTwy5CHuB5Dw 密码:jlt2)
2、配置好python环境变量,验证是否安装成功
3、下载pycrypto-2.6.win32-py2.7.exe,安装pycrypto
4、pip 安装pkcs7、binascii、base64
方法一
# -*- coding: utf-8 -*-
__author__ = 'Administrator'
import base64
from base64 import b64decode
import json
import os
os.path.dirname("C:\Python27\Lib\site-packages")
from Crypto.Cipher import AES
from pkcs7 import PKCS7Encoder
from binascii import b2a_hex, a2b_hex
AES_SECRET_KEY = '0123456789123456'
IV = "2015030120123456"
class AES_ENCRYPT():
def __init__(self):
self.key = AES_SECRET_KEY
self.mode = AES.MODE_CBC #CBC模式
self.iv = IV
#加密函数
def encrypt(self, text):
encode = PKCS7Encoder()#PKCS7
encode_text = encode.encode(text)#编码格式
crypto = AES.new(self.key, self.mode,self.iv)
crypto_text = crypto.encrypt(encode_text)
print(base64.b64encode(crypto_text)) #转换base64编码
#解密函数
def unencrypt(self,text1):
dencode1 = AES.new(self.key, self.mode, self.iv)
aa=base64.b64decode(text1)
bb=dencode1.decrypt(aa).decode('utf8')
print bb
if __name__ == '__main__':
aes_encrypt = AES_ENCRYPT()
text = {"name":"zhangsan",
"age":6}
text1 = "go/qYTXY4P0Fq0m7rSdDFHPHTzh1wkO7U62ll2+PKWA="
str=json.dumps(text)
aes_encrypt.encrypt(str)
aes_encrypt.unencrypt(text1)
方法二
# -*- coding: utf-8 -*-
__author__ = 'Administrator'
import base64
from Crypto.Cipher import AES
import json
AES_SECRET_KEY = '0123456789123456'
IV = '2015030120123456'
class AESCipher:
def __init__(self):
self.key =AES_SECRET_KEY #只截取16位
self.iv = IV# 16位字符,用来填充缺失内容,可固定值也可随机字符串,具体选择看需求。
self.mode=AES.MODE_CBC
def __pad(self, text):
"""填充方式,加密内容必须为16字节的倍数,若不足则使用self.iv进行填充"""
text_length = len(text)
amount_to_pad = AES.block_size - (text_length % AES.block_size)
if amount_to_pad == 0:
amount_to_pad = AES.block_size
pad = chr(amount_to_pad)
return text + pad * amount_to_pad
def __unpad(self, text):
pad = ord(text[-1])
return text[:-pad]
def encrypt(self, raw):
"""加密"""
raw = self.__pad(raw)
cipher = AES.new(self.key, self.mode, self.iv)
return base64.b64encode(cipher.encrypt(raw))
def decrypt(self, enc):
"""解密"""
enc = base64.b64decode(enc)
cipher = AES.new(self.key, self.mode, self.iv )
return self.__unpad(cipher.decrypt(enc).decode("utf-8"))
if __name__ == '__main__':
e = AESCipher()
secret_data = {"errorDesc":"","responseBody":{"creditList":{"areaCode":"30112","areaName":"西南区域","balance":"253944.89","branchCode":"3010212","branchName":"冀鲁分部","judgeState":"1","mob":"26","mop":"41","orgCode":"301000817","orgCreateTime":1470240000000,"orgName":"滕州营业一部","overdueRate":"0.6667","postCode":"86","postName":"信销团队主任","roleCode":"md_tdzr","sex":"1","userCreateTime":1430668800000,"userName":"高立豹","userNo":"10022031"},"onlyId":"onlyId_20180907113324527_6113","userInfoList":{"mobile":"13112345678","orgCode":"301000817","orgName":"滕州营业一部","personalInfo":"一二三四五六七八九","projectNo":"1","sex":"1","userName":"高立豹","userNo":"10022031"}},"retCode":200}
cl=json.dumps(secret_data)
enc_str = e.encrypt(cl)
# print('enc_str: ' + enc_str.decode())
te="4mqRvt8bY9enuuG/4EGNEoqO4YYl5a/ibLfOtij3ef/7T585cZu6WXvTK92hW1A1geI+liJiVRRZdlod+JUZt1XHTrw2auKCnoXD29tMR3VFGqL5ScZsGG5iDsxFIeZNtJlkqUjGgGetl/32QQovoitKkg30b8PePikvCWl2mTYYKCHmacxX0JMvBYyvZbTxB6xqDPljBRnq4JftMEnb0WYj38LcA+tqoxljLGh+kjDh7OdJHNvmoiw7JWJsv5bTTwYgOiWGONjrQMjE3j7uGqXIBmMGDVsDVPLPoCfNuwwfhH0WLPIKp+MnRR1pLlGsA/P3f17NH6BgxYIcyV96IbXQQ6JSAo+k2RCpC3JC6EcHHIj7EjE/w00Z0tvS0VNkknYhqiJNZH79u2Jo5aJ6vufNVs9gZWz7KdSzpfXY/mwrXbtKGT1xUMjDdatJeOtRFGsN+alcjx7jONFI4mPTn0B5PtTHheGDAIEt2o2ZHFAFTKaz9lm7Tok1n4XbvP2lcIUq1oFOeAzjW2WP3IMWrZNl0SULmR94YrPKlFbEPpHmujMVtNqYPC7mV+1uJDDBzxmrTZQ0FQa+rwdHcqZKfRySE9vIUOtF0Jv2HjlYsWMfbYcgQ/11GcHNMsWj9hZajaM4mh4JZgtFCsi0JF8hUc9GGe/eLpRw3Vq2TgKVQYRshrCs1WZn4SeCD1pjm85iWMUKNGuRIp7Kpzc2RsUMDV914Egtvx1iGSjD+Ym1YDDrm9NaG1cPReeIYbC+c6tqLCp8bAmqhFEUorIvq6qqHhtAauJuHq4qSDoS6lQb6Dky7n+87633LIfkXhUJhJYQkWxWlmXu5EJIE8U7/0r4wlybuLIacrcDImsU9VJu6jvdlUm2P8JXOhX735udAyX+2IzdJeWC4sRKoYIikRYa1xxkgUMdzrhDUz+CtPiyHN8WzqnBfvN1dSyeMsF4yS6SKzj/JoHcyQySz5MklscmTg=="
dec_str = e.decrypt(te)
print('dec str: ' + dec_str)