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字符串处理实现单词反转
Jun 14 Python
python爬虫获取淘宝天猫商品详细参数
Jun 23 Python
对Python 2.7 pandas 中的read_excel详解
May 04 Python
Python装饰器知识点补充
May 28 Python
谈一谈基于python的面向对象编程基础
May 21 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
python元组的概念知识点
Nov 19 Python
python 通过手机号识别出对应的微信性别(实例代码)
Dec 22 Python
基于python requests selenium爬取excel vba过程解析
Aug 12 Python
python与c语言的语法有哪些不一样的
Sep 13 Python
python3实现简单飞机大战
Nov 29 Python
用Python可视化新冠疫情数据
Jan 18 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
PHP排序二叉树基本功能实现方法示例
2018/05/26 PHP
JTrackBar水平拖动效果
2007/07/15 Javascript
jquery动态加载图片数据练习代码
2011/08/04 Javascript
分享一个自定义的console类 让你不再纠结JS中的调试代码的兼容
2012/04/20 Javascript
用json方式实现在 js 中建立一个map
2014/05/02 Javascript
JavaScript中定义函数的三种方法
2015/03/12 Javascript
AngularJS的表单使用详解
2015/06/17 Javascript
Bootstrap每天必学之日期控制
2016/03/07 Javascript
AngularJS ng-bind-html 指令详解及实例代码
2016/07/30 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
vue实现app页面切换动画效果实例
2017/05/23 Javascript
Vue.js学习笔记之常用模板语法详解
2017/07/25 Javascript
基于jQuery的$.getScript方法去加载javaScript文档解析
2017/11/08 jQuery
vue的常用组件操作方法应用分析
2018/04/13 Javascript
30分钟精通React今年最劲爆的新特性——React Hooks
2019/03/11 Javascript
浅谈Vue.js之初始化el以及数据的绑定说明
2019/11/14 Javascript
Electron整合React使用搭建开发环境的步骤详解
2020/06/07 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
Python字符转换
2008/09/06 Python
Python 调用DLL操作抄表机
2009/01/12 Python
介绍Python中内置的itertools模块
2015/04/29 Python
python词云库wordcloud的使用方法与实例详解
2020/02/17 Python
python3用PyPDF2解析pdf文件,用正则匹配数据方式
2020/05/12 Python
使用Keras建立模型并训练等一系列操作方式
2020/07/02 Python
一张图片能隐含千言万语之隐藏你的程序代码
2012/12/13 HTML / CSS
办公室副主任岗位职责
2013/11/25 职场文书
银行求职信个人范文
2013/12/16 职场文书
中文专业毕业生自荐书范文
2014/01/04 职场文书
优秀教师先进事迹
2014/01/22 职场文书
商务英语专业求职信范文
2014/01/28 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
神农溪导游词
2015/02/11 职场文书
年度考核个人总结
2015/03/06 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
MySQL之高可用集群部署及故障切换实现
2021/04/22 MySQL