python使用aes加密解密(python实现AES加密与解密)
类别:脚本大全 浏览量:1663
时间:2021-10-24 10:35:25 python使用aes加密解密
python实现AES加密与解密AES加密方式有五种:ECB, CBC, CTR, CFB, OFB
从安全性角度推荐CBC加密方法,本文介绍了CBC,ECB两种加密方法的python实现
python 在 Windows下使用AES时要安装的是pycryptodome 模块
pip install pycryptodome
python 在 Linux下使用AES时要安装的是pycrypto模块
pip install pycrypto
CBC加密需要一个十六位的key(密钥)和一个十六位iv(偏移量)
ECB加密不需要iv
AES CBC 加密的python实现
|
from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex # 如果text不足16位的倍数就用空格补足为16位 def add_to_16(text): if len (text.encode( 'utf-8' )) % 16 : add = 16 - ( len (text.encode( 'utf-8' )) % 16 ) else : add = 0 text = text + ( '\0' * add) return text.encode( 'utf-8' ) # 加密函数 def encrypt(text): key = '9999999999999999' .encode( 'utf-8' ) mode = AES.MODE_CBC iv = b 'qqqqqqqqqqqqqqqq' text = add_to_16(text) cryptos = AES.new(key, mode, iv) cipher_text = cryptos.encrypt(text) # 因为AES加密后的字符串不一定是ascii字符集的,输出保存可能存在问题,所以这里转为16进制字符串 return b2a_hex(cipher_text) # 解密后,去掉补足的空格用strip() 去掉 def decrypt(text): key = '9999999999999999' .encode( 'utf-8' ) iv = b 'qqqqqqqqqqqqqqqq' mode = AES.MODE_CBC cryptos = AES.new(key, mode, iv) plain_text = cryptos.decrypt(a2b_hex(text)) return bytes.decode(plain_text).rstrip( '\0' ) if __name__ = = '__main__' : e = encrypt( "hello world" ) # 加密 d = decrypt(e) # 解密 print ( "加密:" , e) print ( "解密:" , d) |
AES ECB加密的python实现
|
""" ECB没有偏移量 """ from Crypto.Cipher import AES from binascii import b2a_hex, a2b_hex def add_to_16(text): if len (text.encode( 'utf-8' )) % 16 : add = 16 - ( len (text.encode( 'utf-8' )) % 16 ) else : add = 0 text = text + ( '\0' * add) return text.encode( 'utf-8' ) # 加密函数 def encrypt(text): key = '9999999999999999' .encode( 'utf-8' ) mode = AES.MODE_ECB text = add_to_16(text) cryptos = AES.new(key, mode) cipher_text = cryptos.encrypt(text) return b2a_hex(cipher_text) # 解密后,去掉补足的空格用strip() 去掉 def decrypt(text): key = '9999999999999999' .encode( 'utf-8' ) mode = AES.MODE_ECB cryptor = AES.new(key, mode) plain_text = cryptor.decrypt(a2b_hex(text)) return bytes.decode(plain_text).rstrip( '\0' ) if __name__ = = '__main__' : e = encrypt( "hello world" ) # 加密 d = decrypt(e) # 解密 print ( "加密:" , e) print ( "解密:" , d) |
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持开心学习网。
原文链接:http://www.cnblogs.com/niuu/p/10107212.html
您可能感兴趣
- python中生成字符串序列(python实现字符串加密 生成唯一固定长度字符串)
- python多进程与多线程详解(Python线程之定位与销毁的实现)
- python中什么是迭代器(一篇文章彻底搞懂Python中可迭代Iterable、迭代器Iterator与生成器Generator的概)
- scrapy框架爬取小说的正文内容(Scrapy框架爬取Boss直聘网Python职位信息的源码)
- python3安装编程环境(Python3 修改默认环境的方法)
- python ip代理池(Python 实现域名解析为ip的方法)
- python钉钉机器人(python钉钉机器人运维脚本监控实例)
- python3json序列化(Python3.5 Json与pickle实现数据序列化与反序列化操作示例)
- pythonmatplotlib画图流程(python3使用matplotlib绘制条形图)
- python零基础入门五小时(从0开始的Python学习016异常)
- python 爬虫图形验证码(Python爬虫实现验证码登录代码实例)
- python中的pandas功能(Python常见的pandas用法demo示例)
- python开启线程池(对python:threading.Thread类的使用方法详解)
- docker python如何运行(Docker容器化部署Python应用过程解析)
- python字符串找一个最大字符(Python查找最长不包含重复字符的子字符串算法示例)
- python中字典的常用操作(11个Python3字典内置方法大全与示例汇总)
- 刚红就耍大牌,《琉璃》角色滤镜碎一地,心疼工作人员(琉璃角色滤镜碎一地)
- 袁冰妍郑业成这对可以处,有脸红情话他们是真的敢说(袁冰妍郑业成这对可以处)
- 《祝卿好》台词又土又甜,就喜欢这么直接的恋爱(祝卿好台词又土又甜)
- 大女主 汤唯垂青电视圈,搭档朱亚文出演《大明皇妃孙若微传》(汤唯垂青电视圈)
- 红色代表什么(红色代表什么情感和含义)
- 高中数学题(高中数学题型总结及解题方法)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9