python3.6 实现AES加密的示例(pyCryptodome)


Posted in Python onJanuary 10, 2018

起因

前端日子写完的Python入库脚本,通过直接读取配置文件的内容(包含了数据库的ip,数据库的用户名,数据库的密码),因为配置文件中的数据库密码是明文显示的,所以不太安全,由此对其进行加密。

编码之路

编程环境

  1. Python3.6
  2. 第三方库?pyCryptodome

第三方库的介绍及下载

1.在之前的AES加密中,python2或者3.4采用的是pyCyrpto这个模块,但是昨天废了好大劲去安装它都是失败,而经过大量查阅发现此库已经停止维护了,在安装过程中尽管用pip install pycryto 去下载,对应的tar.gz可以下载,但是在自动安装时会报错,说是没有微软2014的工具环境。

2.后经继续查阅,发现pyCyrpto库的后续分支,有一个叫pyCryptodome的库,是前代的延伸版,下面给出一个全面的地址,如果有pip安装不了的库可以通过此网站进行对应的下载。

https://www.lfd.uci.edu/~gohlke/pythonlibs/

python3.6 实现AES加密的示例(pyCryptodome)

当然我也是通过官方推荐,使用下面命令去下载安装的,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这一次算是初体验了…..也算长见识了….尴尬之处就是在于加密后的是字节形式的。。。。。。也有可能是我哪里写的有问题吧,若有的话,还望高人指出呀。。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python中使用装饰器时需要注意的一些问题
May 11 Python
如何使用python爬取csdn博客访问量
Feb 14 Python
python调用fortran模块
Apr 08 Python
Python实现字符串格式化的方法小结
Feb 20 Python
python看某个模块的版本方法
Oct 16 Python
Python简单I/O操作示例
Mar 18 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
如何利用Anaconda配置简单的Python环境
Jun 24 Python
python groupby 函数 as_index详解
Dec 16 Python
从零开始的TensorFlow+VScode开发环境搭建的步骤(图文)
Aug 31 Python
如何基于Python pygame实现动画跑马灯
Nov 18 Python
python中的对数log函数表示及用法
Dec 09 Python
Python设计模式之MVC模式简单示例
Jan 10 #Python
Python设计模式之命令模式简单示例
Jan 10 #Python
Python爬虫实例_利用百度地图API批量获取城市所有的POI点
Jan 10 #Python
Python之多线程爬虫抓取网页图片的示例代码
Jan 10 #Python
Python设计模式之观察者模式简单示例
Jan 10 #Python
Python爬虫实例_城市公交网络站点数据的爬取方法
Jan 10 #Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 #Python
You might like
用文本作数据处理
2006/10/09 PHP
深入解析php模板技术原理【一】
2008/01/10 PHP
thinkphp 多表 事务详解
2013/06/17 PHP
PHP遍历数组的三种方法及效率对比分析
2015/02/12 PHP
PHP Laravel中的Trait使用方法
2019/01/20 PHP
JS加ASP二级域名转向的代码
2007/05/17 Javascript
js控制表单不能输入空格的小例子
2013/11/20 Javascript
JavaScript设计模式之单例模式实例
2014/09/24 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
avalonjs制作响应式瀑布流特效
2015/05/06 Javascript
移动端js触摸事件详解
2016/09/18 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
Node.js数据库操作之查询MySQL数据库(二)
2017/03/04 Javascript
基于JavaScript实现移动端无限加载分页
2017/03/27 Javascript
使用JS编写的随机抽取号码的小程序
2017/08/11 Javascript
jQuery实现checkbox全选功能完整实例
2018/07/12 jQuery
javascript单张多张图无缝滚动实例代码
2020/05/10 Javascript
vue点击标签切换选中及互相排斥操作
2020/07/17 Javascript
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
python中map()函数的使用方法示例
2017/09/29 Python
python实现Flappy Bird源码
2018/12/24 Python
对python多线程中Lock()与RLock()锁详解
2019/01/11 Python
python装饰器的特性原理详解
2019/12/25 Python
基于python实现上传文件到OSS代码实例
2020/05/09 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
2021/01/15 Python
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
XMLHttpRequest对象在IE和Firefox中创建方式有没有不同
2016/03/23 面试题
幼师自荐信范文
2013/10/06 职场文书
自动化专业毕业生自荐信
2013/11/01 职场文书
大专生毕业的自我评价
2014/02/06 职场文书
租房合同协议书
2014/04/09 职场文书
1亿有多大教学反思
2014/05/01 职场文书
爱心倡议书范文
2014/05/12 职场文书
道歉的话怎么说
2015/05/12 职场文书
六五普法心得体会2016
2016/01/21 职场文书
用Python制作灯光秀短视频的思路详解
2021/04/13 Python