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 24 Python
用Python编写web API的教程
Apr 30 Python
Python实现对百度云的文件上传(实例讲解)
Oct 21 Python
详解用Python练习画个美队盾牌
Mar 23 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
python 使用while写猜年龄小游戏过程解析
Oct 07 Python
python实现KNN分类算法
Oct 16 Python
python多进程 主进程和子进程间共享和不共享全局变量实例
Apr 25 Python
基于python实现操作git过程代码解析
Jul 27 Python
Python 高效编程技巧分享
Sep 10 Python
Pycharm Git 设置方法
Sep 15 Python
梳理总结Python开发中需要摒弃的18个坏习惯
Jan 22 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下获取Discuz论坛登录用户名、用户组、用户ID等信息的实现代码
2010/12/29 PHP
使用PHP强制下载PDF文件示例
2014/01/17 PHP
thinkPHP实现多字段模糊匹配查询的方法
2016/12/01 PHP
php实现将数据做成json的格式给前端使用
2018/08/21 PHP
php把文件设置为插件的技巧方法
2020/02/03 PHP
JavaScript整除运算函数ceil和floor的区别分析
2015/04/14 Javascript
javascript格式化指定日期对象的方法
2015/04/21 Javascript
JavaScript前端开发之实现二进制读写操作
2015/11/04 Javascript
nodejs中解决异步嵌套循环和循环嵌套异步的问题
2017/07/12 NodeJs
微信开发之企业付款到银行卡接口开发的示例代码
2018/09/18 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
详解javascript中的Error对象
2019/04/25 Javascript
jquery UI实现autocomplete在获取焦点时得到显示列表功能示例
2019/06/04 jQuery
Vue form表单动态添加组件实战案例
2019/09/02 Javascript
利用Vue实现简易播放器的完整代码
2020/12/30 Vue.js
[04:48]DOTA2上海特锦赛小组赛第三日 TOP10精彩集锦
2016/02/28 DOTA
python时间整形转标准格式的示例分享
2014/02/14 Python
Python写的Tkinter程序屏幕居中方法
2015/03/10 Python
Python操作串口的方法
2015/06/17 Python
使用Python的Twisted框架构建非阻塞下载程序的实例教程
2016/05/25 Python
Python模块结构与布局操作方法实例分析
2017/07/24 Python
Python基于identicon库创建类似Github上用的头像功能
2017/09/25 Python
在python中只选取列表中某一纵列的方法
2018/11/28 Python
python飞机大战游戏实例讲解
2020/12/04 Python
中国电视购物:快乐购
2017/02/04 全球购物
Shopping happy life西班牙:以最优惠的价格提供最好的时尚配饰
2020/03/13 全球购物
Happy Plugs官网:瑞典无线耳机品牌
2020/07/16 全球购物
上海微创软件面试题
2012/06/14 面试题
市场开发与营销专业求职信
2013/12/31 职场文书
护士演讲稿范文
2014/01/05 职场文书
互联网创业计划书写作技巧攻略
2014/03/23 职场文书
2014年感恩节活动策划方案
2014/10/06 职场文书
胡雪岩故居导游词
2015/02/06 职场文书
离职告别感言
2015/08/04 职场文书
入党申请书怎么写?
2019/06/21 职场文书
jQuery ajax - getScript() 方法和getJSON方法
2021/05/14 jQuery