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 相关文章推荐
rhythmbox中文名乱码问题解决方法
Sep 06 Python
Python文件右键找不到IDLE打开项解决办法
Jun 08 Python
Python统计日志中每个IP出现次数的方法
Jul 06 Python
详解Python中的__getitem__方法与slice对象的切片操作
Jun 27 Python
flask中使用蓝图将路由分开写在不同文件实例解析
Jan 19 Python
通过python顺序修改文件名字的方法
Jul 11 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
python画图——实现在图上标注上具体数值的方法
Jul 08 Python
使用pandas实现连续数据的离散化处理方式(分箱操作)
Nov 22 Python
解决tensorflow由于未初始化变量而导致的错误问题
Jan 06 Python
基于Python实现全自动下载抖音视频
Nov 06 Python
python中xlutils库用法浅析
Dec 29 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获取url字符串截取路径的文件名和扩展名的函数
2010/01/22 PHP
PHP explode()函数用法、切分字符串
2012/10/03 PHP
php基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
PHP正则获取页面所有图片地址
2016/03/23 PHP
PHP实现统计在线人数功能示例
2016/10/15 PHP
基于ThinkPHP实现的日历功能实例详解
2017/04/15 PHP
php生成条形码的图片的实例详解
2017/09/13 PHP
js正确获取元素样式详解
2009/08/07 Javascript
显示js对象所有属性和方法的函数
2009/10/16 Javascript
javascript URL编码和解码使用说明
2010/04/12 Javascript
jQuery 源码分析笔记(6) jQuery.data
2011/06/08 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
jQuery实现高亮显示网页关键词的方法
2015/08/07 Javascript
Angular2搜索和重置按钮过场动画
2017/05/24 Javascript
php简单数据库操作类的封装
2017/06/08 Javascript
如何使用three.js 制作一个三维的推箱子游戏
2020/07/29 Javascript
[00:02]DOTA2新版本使用PA至宝后暴击展示
2014/11/19 DOTA
pycharm 使用心得(四)显示行号
2014/06/05 Python
Python书单 不将就
2017/07/11 Python
python re模块的高级用法详解
2018/06/06 Python
Python实现的爬取小说爬虫功能示例
2019/03/30 Python
Python 导入文件过程图解
2019/10/15 Python
对Tensorflow中Device实例的生成和管理详解
2020/02/04 Python
python实现可下载音乐的音乐播放器
2020/02/25 Python
Python numpy矩阵处理运算工具用法汇总
2020/07/13 Python
十岁生日同学答谢词
2014/01/19 职场文书
大学生学习2014年全国两会心得体会
2014/03/12 职场文书
就业推荐表自我鉴定
2014/03/21 职场文书
竞选班干部的演讲稿
2014/04/24 职场文书
2014旅游局党组书记党建工作汇报材料
2014/11/02 职场文书
诚信考试承诺书范文
2015/04/29 职场文书
工作表现证明
2015/06/15 职场文书
青年联谊会致辞
2015/07/31 职场文书
大学军训通讯稿(2016最新版)
2015/12/21 职场文书
TensorFlow的自动求导原理分析
2021/05/26 Python