python3.6 实现AES加密的示例(pyCryptodome)
作者:sy_y 时间:2022-07-05 08:17:08
起因
前端日子写完的Python入库脚本,通过直接读取配置文件的内容(包含了数据库的ip,数据库的用户名,数据库的密码),因为配置文件中的数据库密码是明文显示的,所以不太安全,由此对其进行加密。
编码之路
编程环境
Python3.6
第三方库–pyCryptodome
第三方库的介绍及下载
1.在之前的AES加密中,python2或者3.4采用的是pyCyrpto这个模块,但是昨天废了好大劲去安装它都是失败,而经过大量查阅发现此库已经停止维护了,在安装过程中尽管用pip install pycryto 去下载,对应的tar.gz可以下载,但是在自动安装时会报错,说是没有微软2014的工具环境。
2.后经继续查阅,发现pyCyrpto库的后续分支,有一个叫pyCryptodome的库,是前代的延伸版,下面给出一个全面的地址,如果有pip安装不了的库可以通过此网站进行对应的下载。
https://www.lfd.uci.edu/~gohlke/pythonlibs/
当然我也是通过官方推荐,使用下面命令去下载安装的,pip就是好用。。。
pip install pycryptodome
撸码开始
废话不多说,直接上demo
#AES-demo
"""
@author: sy
@file: python_AES.py
@time: 2017/12/12 09:10
@desc: AES加密
"""
from Crypto.Cipher import AES
#秘钥,此处需要将字符串转为字节
key = b'abcdefgh'
#加密内容需要长达16位字符,所以进行空格拼接
def pad(text):
while len(text) % 16 != 0:
text += b' '
return text
#加密秘钥需要长达16位字符,所以进行空格拼接
def pad_key(key):
while len(key) % 16 != 0:
key += b' '
return key
#进行加密算法,模式ECB模式,把叠加完16位的秘钥传进来
aes = AES.new(pad_key(key), AES.MODE_ECB)
#加密内容,此处需要将字符串转为字节
text = b'woshijiamineirong'
#进行内容拼接16位字符后传入加密类中,结果为字节类型
encrypted_text = aes.encrypt(pad(text))
print(encrypted_text)
#此处是为了验证是否能将字节转为字符串后,进行解密成功
#实际上a 就是 encrypted_text ,也就是加密后的内容
a = b'\xb9K\xe8_.q\x1c!\x9f\xa2\xc8\x06\xf5\xc1\xd07'
#用aes对象进行解密,将字节类型转为str类型,错误编码忽略不计
de = str(aes.decrypt(a),encoding='utf-8',errors="ignore")
#获取str从0开始到文本内容的字符串长度。
print(de[:len(text)])
结语
关于AES的加密,在java上看到项目中有用到过,但是对于Python这一次算是初体验了…..也算长见识了….尴尬之处就是在于加密后的是字节形式的。。。。。。也有可能是我哪里写的有问题吧,若有的话,还望高人指出呀。。
来源:http://blog.csdn.net/s740556472/article/details/78778522
标签:python,AES,加密
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
MySQL 查询缓存的实际应用代码示例
2010-06-11 12:04:00
Javascript编写Asp时需要注意的一些地方
2008-04-06 14:20:00
关于浏览器地址栏的小图标favicon.ico制作
2010-03-07 15:57:00
python计算时间差的方法
2023-05-19 16:08:23
提一个懒人需求——找遥控器的电视
2009-03-23 18:16:00
![](https://img.aspxhome.com/file/UploadPic/20093/23/200902062345306162-70s.png)
在 SQL Server 数据库开发中的十大问题
2009-07-02 16:39:00
asp学习入门基本语法知识
2007-11-07 14:02:00
利用box-sizing实现div仿框架
2009-12-08 15:45:00
![](https://img.aspxhome.com/file/UploadPic/200912/8/01-32s.gif)
从Vista地址栏到网站导航菜单
2009-09-08 12:35:00
![](https://img.aspxhome.com/file/UploadPic/20099/8/nav-62s.jpg)
python中的Pytorch建模流程汇总
2022-04-26 19:02:14
Python OpenCV 使用滑动条来调整函数参数的方法
2022-05-20 06:43:48
![](https://img.aspxhome.com/file/2023/4/76144_0s.jpg)
php生成图片验证码的实例讲解
2023-09-11 21:36:29
![](https://img.aspxhome.com/file/2023/4/55574_0s.png)
Asp+ajax打造无刷新新闻评论系统
2008-02-12 15:43:00
![](https://img.aspxhome.com/file/UploadPic/up/2008021216135462.gif)
使用 createProcessingInstruction 方法不能输出 encoding 的解决方法
2009-03-10 18:22:00
Python中的元类编程入门指引
2023-08-02 02:43:44
Python搭建HTTP服务过程图解
2023-08-08 22:11:54
![](https://img.aspxhome.com/file/2023/1/62291_0s.png)
PHP5在Apache下的两种模式的安装
2023-11-24 05:18:08
使用TensorFlow搭建一个全连接神经网络教程
2023-01-10 10:59:20
![](https://img.aspxhome.com/file/2023/0/78630_0s.jpg)
prototype-1.4.0注释版源代码下载
2007-09-30 14:06:00
sql server数据库最大Id冲突问题解决方法之一
2012-01-05 19:28:42