博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python aes加密和 解密
阅读量:5916 次
发布时间:2019-06-19

本文共 1160 字,大约阅读时间需要 3 分钟。

hot3.png

#encoding:utf-8from Crypto.Cipher import  AESimport  base64class prpcrypt():    def __init__(self, key):        #这里密钥key 长度必须为16(AES-128)、24(AES-192)、或32(AES-256)Bytes 长度.        #目前AES-128足够用        if len(key)<16:            key=key+(16-len(key))*"\0"        self.key = key[:16]        self.mode = AES.MODE_CBC    #加密函数,如果text不是16的倍数【加密文本text必须为16的倍数!】,那就补足为16的倍数    def encrypt(self, text):        cryptor = AES.new(self.key, self.mode, IV=self.key)        length = 16        count = len(text)        add=count % length        if add:            text = text + ('\0' * (length-add))        self.ciphertext = cryptor.encrypt(text)        #因为AES加密时候得到的字符串不一定是ascii字符集的,输出到终端或者保存时候可能存在问题        #所以这里统一把加密后的字符串用base64转化        return base64.b64encode(self.ciphertext)    #解密后,去掉补足的'\0'用strip() 去掉    def decrypt(self, text):        cryptor = AES.new(self.key, self.mode, IV=self.key)        plain_text = cryptor.decrypt(base64.b64decode(text))        return plain_text.rstrip('\0')if __name__ == '__main__':    key='keys'*10    pc = prpcrypt(key)    e = pc.encrypt("8")    print e    d = pc.decrypt(e)    print d

转载于:https://my.oschina.net/u/1458120/blog/648350

你可能感兴趣的文章
android系统信息总结
查看>>
个国内速度最快的centos yum(更新源)
查看>>
phantomjs处理异步加载后,获取渲染后的页面源码
查看>>
varnish 简介以及实用配置
查看>>
Python中pyc文件的用途
查看>>
eclipse调试远程Tomact
查看>>
[Swift]快速排序算法
查看>>
presto中的名词
查看>>
【致青春】开垦出的IT路
查看>>
解决apache服务器下载.dmg文件乱码页码问题
查看>>
四种方案解决ScrollView嵌套ListView问题
查看>>
实例讲解PAT配置
查看>>
centos下network和NetworkManager冲突的解决方法
查看>>
系分----第十九章(系统分析设计与案例分析)
查看>>
Mac OS上搭建Apache+PHP+MySQL开发环境的详细教程
查看>>
ccnp大型企业综合案例分析2
查看>>
odoo二次开发小知识点
查看>>
linux基础命令 rm
查看>>
多线程 -线程面试题(一)
查看>>
OpenStack如何实现高可用集群介绍
查看>>