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中怎么连接mysql(python远程连接MySQL数据库)
- python中for语句的无限循环(python使用for循环计算0-100的整数的和方法)
- python进程管理教程(Python I/O与进程的详细讲解)
- python大数据学习顺序(Python如何处理大数据?3个技巧效率提升攻略推荐)
- python冒泡排序代码通俗理解(详解python算法之冒泡排序)
- python自己做个定时器(对python周期性定时器的示例详解)
- python 正则表达式语法大全(python re库的正则表达式入门学习教程)
- python制作彩色字符(Python3利用print输出带颜色的彩色字体示例代码)
- python中怎么实现登录程序(详解Python用户登录接口的方法)
- pythonmatplotlib怎么设置图像(完美解决Python matplotlib绘图时汉字显示不正常的问题)
- 如何去阿里云解析域名(利用Python+阿里云实现DDNS动态域名解析的方法)
- python初学者必备函数(Python小白必备的8个最常用的内置函数推荐)
- python的def命令参数(python ddt数据驱动最简实例代码)
- python多进程创建细节(Python实现多进程的四种方式)
- python函数使用方法高级用法(Python函数的参数常见分类与用法实例详解)
- python直接查询mongodb(pymongo中聚合查询的使用方法)
- 三分71 生死战爆发 篮网旧将丁威迪今天成奇兵,助队赢球(三分71生死战爆发)
- 《红 雄安》系列广播剧第一集 水上奇兵雁翎队(雄安系列广播剧第一集)
- 小说 小伙穿越成刘备,用现代知识指挥作战,众谋士都看呆了(小伙穿越成刘备)
- 解析葡萄牙6-1瑞士 进攻多点开花,贡萨洛-拉莫斯一战成名(解析葡萄牙6-1瑞士)
- 这支 奇兵队 腕大 有范儿还各怀绝技,毒贩杀人犯见了都要仓皇而逃(这支奇兵队腕大)
- 雄藩崛起 奇兵队与幕末长州藩军事改革(雄藩崛起奇兵队与幕末长州藩军事改革)
热门推荐
- php class使用场景(php反射学习之不用new方法实例化类操作示例)
- python最火开源项目(5月份Github上Python开源项目排行)
- 轻量云服务器和ecs服务器区别(ECS云服务器租用的优势表现在哪些方面?)
- apache持续连接时间设置(Apache增加最大连接数的方法)
- dedecms怎么修改模板(DedeCMS新建模型字段中附件样式的修改方法)
- dede系统静态页面(DEDE登陆后台很慢的原因分析与解决方法)
- 宝塔linux面板新手使用教程交流(宝塔面板Linux自动磁盘挂载工具 BT-Panel 1.0)
- 网页嵌入百度UEditor富文本编辑器
- 数据库sql位置更换磁盘(SQL SERVER迁移之更换磁盘文件夹的完整步骤)
- vs远程调试
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9