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 21 Python
python采用django框架实现支付宝即时到帐接口
May 17 Python
python使用fcntl模块实现程序加锁功能示例
Jun 23 Python
python的mysqldb安装步骤详解
Aug 14 Python
Python 12306抢火车票脚本
Feb 07 Python
python3模块smtplib实现发送邮件功能
May 22 Python
学习python分支结构
May 17 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
Python调用scp向服务器上传文件示例
Dec 22 Python
tensorflow+k-means聚类简单实现猫狗图像分类的方法
Apr 28 Python
Python基础学习之奇异的GUI对话框
May 27 Python
Python自动化工具之实现Excel转Markdown表格
Apr 08 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中,文件上传
2006/12/06 PHP
一段php加密解密的代码
2007/07/16 PHP
destoon整合UCenter图文教程
2014/06/21 PHP
ThinkPHP模板替换与系统常量及应用实例教程
2014/08/22 PHP
ThinkPHP中URL路径访问与模块控制器之间的关系
2014/08/23 PHP
php中magic_quotes_gpc对unserialize的影响分析
2014/12/16 PHP
浅谈PHP发送HTTP请求的几种方式
2017/07/25 PHP
Laravel学习教程之View模块详解
2017/09/18 PHP
js+CSS 图片等比缩小并垂直居中实现代码
2008/12/01 Javascript
jquery下组织javascript代码(js函数化)
2010/08/25 Javascript
浅析基于WEB前端页面的页面内容搜索的实现思路
2014/06/10 Javascript
jQuery使用before()和after()在元素前后添加内容的方法
2015/03/26 Javascript
基于canvas实现的绚丽圆圈效果完整实例
2016/01/26 Javascript
Vue自定义指令介绍(2)
2016/12/08 Javascript
简单实现jQuery多选框功能
2017/01/09 Javascript
Angular使用$http.jsonp发送跨站请求的方法
2017/03/16 Javascript
通过实践编写优雅的JavaScript代码
2019/05/30 Javascript
vue子路由跳转实现tab选项卡
2019/07/24 Javascript
vue学习笔记之slot插槽用法实例分析
2020/02/29 Javascript
Python判断某个用户对某个文件的权限
2016/10/13 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
2019/03/27 Python
bluepy 一款python封装的BLE利器简单介绍
2019/06/25 Python
css3媒体查询中device-width和width的区别详解
2020/03/27 HTML / CSS
雅诗兰黛美国官网:Estee Lauder美国
2016/07/21 全球购物
eBay德国站:eBay.de
2017/09/14 全球购物
德国在线购买葡萄酒网站:Geile Weine
2019/09/24 全球购物
医生实习工作总结的自我评价
2013/09/27 职场文书
会计与出纳自荐书范文
2014/03/16 职场文书
企业厂务公开实施方案
2014/03/26 职场文书
对外汉语专业大学生职业生涯规划范文
2014/09/13 职场文书
小学见习报告
2014/10/31 职场文书
2014幼儿园家长工作总结
2014/11/10 职场文书
毕业班工作总结
2015/08/10 职场文书
小学四年级作文之人物作文
2019/11/06 职场文书
判断Python中的Nonetype类型
2021/05/25 Python
海贼王十大逆天果实 魂魂果实上榜,岩浆果实攻击力最强
2022/03/18 日漫