python-aes加密解密

版权声明:本文为博主原创文章,未经博主允许不得转载。 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)

猜你喜欢

转载自blog.csdn.net/weixin_38250126/article/details/82221690