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解析文件示例
Jan 23 Python
Python collections模块实例讲解
Apr 07 Python
跟老齐学Python之Import 模块
Oct 13 Python
Django的session中对于用户验证的支持
Jul 23 Python
浅析AST抽象语法树及Python代码实现
Jun 06 Python
Python爬虫实例爬取网站搞笑段子
Nov 08 Python
Python cv2 图像自适应灰度直方图均衡化处理方法
Dec 07 Python
详解pandas如何去掉、过滤数据集中的某些值或者某些行?
May 15 Python
根据tensor的名字获取变量的值方式
Jan 04 Python
Python json模块与jsonpath模块区别详解
Mar 05 Python
CentOS 7如何实现定时执行python脚本
Jun 24 Python
Pycharm添加虚拟解释器报错问题解决方案
Oct 13 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
thinkphp实现上一篇与下一篇的方法
2014/12/08 PHP
php下载文件超时时间的设置方法
2016/10/06 PHP
JavaScript 内置对象属性及方法集合
2010/07/04 Javascript
javascript自适应宽度的瀑布流实现思路
2013/02/20 Javascript
js鼠标点击图片切换效果代码分享
2015/08/26 Javascript
三分钟学会用ES7中的Async/Await进行异步编程
2018/06/14 Javascript
vue实现户籍管理系统
2020/05/29 Javascript
vue3.0 上手体验
2020/09/21 Javascript
PHP 502bad gateway原因及解决方案
2020/11/13 Javascript
python 示例分享---逻辑推理编程解决八皇后
2014/07/20 Python
Python脚本实现下载合并SAE日志
2015/02/10 Python
Python选课系统开发程序
2016/09/02 Python
Python调用微信公众平台接口操作示例
2017/07/08 Python
Pandas 对Dataframe结构排序的实现方法
2018/04/10 Python
matplotlib subplots 设置总图的标题方法
2018/05/25 Python
Python3中的列表生成式、生成器与迭代器实例详解
2018/06/11 Python
pytorch实现用CNN和LSTM对文本进行分类方式
2020/01/08 Python
如何使用Python破解ZIP或RAR压缩文件密码
2020/01/09 Python
pandas实现excel中的数据透视表和Vlookup函数功能代码
2020/02/14 Python
python设置环境变量的作用整理
2020/02/17 Python
大数据分析用java还是Python
2020/07/06 Python
Win10环境中如何实现python2和python3并存
2020/07/20 Python
Opencv python 图片生成视频的方法示例
2020/11/18 Python
教你一分钟在win10终端成功安装Pytorch的方法步骤
2021/01/28 Python
HTML5 Canvas+JS控制电脑或手机上的摄像头实例
2014/05/03 HTML / CSS
SmartBuyGlasses丹麦:网上购买名牌太阳镜、眼镜和隐形眼镜
2016/10/01 全球购物
土木工程建筑专业毕业生求职信
2013/10/21 职场文书
英文求职信写作小建议
2014/02/16 职场文书
十八届三中全会宣传方案
2014/02/21 职场文书
会计与审计专业自荐信范文
2014/03/15 职场文书
法人授权委托书范本
2014/09/17 职场文书
党支部半年考察意见
2015/06/01 职场文书
python实现web邮箱扫描的示例(附源码)
2021/03/30 Python
教你怎么用Python操作MySql数据库
2021/05/31 Python
ROS系统将python包编译为可执行文件的简单步骤
2021/07/25 Python
Mysql 如何合理地统计一个数据库里的所有表的数据量
2022/04/18 MySQL