加载中…
个人资料
周yc_zZ
周yc_zZ
  • 博客等级:
  • 博客积分:0
  • 博客访问:604
  • 关注人气:1
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
谁看过这篇博文
加载中…
正文 字体大小:

pythonAES加解密CBC

(2019-12-31 14:12:34)
标签:

it

# -*- coding:utf-8 -*-
# 这里使用pycrypto‎demo库
# 安装方法 pip install pycrypto‎demo
 
from Crypto.Cipher import AES
from binascii import b2a_hex, a2b_hex
import io
import sys
import binascii

import base64
import random

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')


import base64
from Crypto.Cipher import AES
from urllib import parse
 
AES_SECRET_KEY = '1234567890123456' #此处16|24|32个字符
IV = "1234567890123456"
 
# padding算法
BS = len(AES_SECRET_KEY)
pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
unpad = lambda s: s[0:-ord(s[-1:])]
 
 
class AES_ENCRYPT(object):
    def __init__(self):
        self.key = AES_SECRET_KEY
        self.mode = AES.MODE_CBC
        
    #加密函数
    def encrypt(self, text):
        cryptor = AES.new(self.key.encode("utf8"), self.mode, IV.encode("utf8"))
        self.ciphertext = cryptor.encrypt(bytes(pad(text), encoding="utf8"))
        # 加密得到的字符串转16进制
        return binascii.hexlify(self.ciphertext)
        
    #解密函数
    def decrypt(self, text):
        # 十六进制转二进制
        decode = binascii.unhexlify(text)
        cryptor = AES.new(self.key.encode("utf8"), self.mode, IV.encode("utf8"))
        plain_text = cryptor.decrypt(decode)
        return unpad(plain_text)
 
if __name__ == '__main__':
    aes_encrypt = AES_ENCRYPT()
    my_email = "{'a':b,'deviceName':dashd123}"
    e = aes_encrypt.encrypt(my_email)
    d = aes_encrypt.decrypt(e)
    print(my_email)
    print(e)
    print(d)

0

阅读 评论 收藏 转载 喜欢 打印举报/Report
  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有