时间:2021-05-22
起因
前端日子写完的Python入库脚本,通过直接读取配置文件的内容(包含了数据库的ip,数据库的用户名,数据库的密码),因为配置文件中的数据库密码是明文显示的,所以不太安全,由此对其进行加密。
编码之路
编程环境
第三方库的介绍及下载
1.在之前的AES加密中,python2或者3.4采用的是pyCyrpto这个模块,但是昨天废了好大劲去安装它都是失败,而经过大量查阅发现此库已经停止维护了,在安装过程中尽管用pip install pycryto 去下载,对应的tar.gz可以下载,但是在自动安装时会报错,说是没有微软2014的工具环境。
2.后经继续查阅,发现pyCyrpto库的后续分支,有一个叫pyCryptodome的库,是前代的延伸版,下面给出一个全面的地址,如果有pip安装不了的库可以通过此网站进行对应的下载。
https://www.lfd.uci.edu/~gohlke/pythonlibs/
当然我也是通过官方推荐,使用下面命令去下载安装的,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这一次算是初体验了…..也算长见识了….尴尬之处就是在于加密后的是字节形式的。。。。。。也有可能是我哪里写的有问题吧,若有的话,还望高人指出呀。。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Python3.7基于pycryptodome的AES加密解密、RSA加密解密、加签验签,具体代码如下所示:#!/usr/bin/envpython#-*-co
本文实例为大家分享了python实现AES加密和解密的具体代码,供大家参考,具体内容如下参考:python实现AES加密和解密AES加密算法是一种对称加密算法,
Python3.6版本Pytesseract图像验证码识别环境:(1)win764位(2)Idea(3)python3.6(4)pipinstallpillow
背景Python3.6性能测试框架Locust的搭建与使用基础python版本:python3.6开发工具:pycharmLocust的安装与配置点击“File
先给大家介绍下CentOS7下安装Python3.6的方法安装python3.6可能使用的依赖yuminstallopenssl-develbzip2-deve