api自动化之:python3实现AES&base64加密

前言:网上看了几篇关于python实现aes加密的文章,其中Crypto之类的库安装之后里面根本没有Cipher模块(from Crypto.Cipher import AES),翻了其它人的文章才知道,Crypto其实已经停止维护了。所以不要去装crypto,应该装pycryptodome。以下是我的环境:

python 版本:3.6.5

pip版本:21.1.3(如果版本低可以升级python3 -m pip install --upgrade pip 。注:我的电脑装载Python2和3两个环境,至于怎么让两个环境共存以后会介绍)

安装依赖库:pycryptodome

cmd执行:pip install pycryptodome

image.png

我的网络环境有点差,不过不要放弃,多试几次就好了。如果浪费的时间太多,就考虑pypi手动下载安装了,因为手动通过下载工具下载有断点续传的方式。 还好这次没有这么麻烦。环境搭建好了下面说实现:

#! /user/bin/evn python
# coding:utf-8
__author__ = 'julian'

from Crypto.Cipher import AES
from Crypto.Util.Padding import pad
import base64


def encryptedContent(data,key='abcdefghijklmnop'):
    '''
    key 表示密钥
    data 表示要加密的字符串
    ufr-8 转码的原因是python3默认字符类型是unicode
    mode 是加密类型
    pad 是补位长度和类型
    最后输出base64密文
    strip 去除回车
    '''
    key = key.encode('utf-8')
    data = data.encode('utf-8')
    data = base64.encodebytes(AES.new(key=key,mode=AES.MODE_ECB).encrypt(pad(data,16,style='pkcs7')))
    return data.decode('utf-8').strip()

print(encryptedContent('15400000000'))
print(encryptedContent('123456','soxkfuwjsjshxjfk'))

执行结果:
DBOrr5w0TI9eYlld5vGm3w==
I1b7CxtzsT6jSBcPMF1/2Q==

通过对比开发人员的代码,以及在线AES加密网站的算法,实现结果一致。可应用于接口参数处理。
AES的实际应用,主要在于约定。密钥,补位倍数,加密类型均需要约定。
比如有位移,甚至有可能最后的加密结果增加一层倒序排列,或者增加干扰字符,比如增加另外一个加密串放在前面,
参数到了后端,从第n位之后截取下来进行参数解码。

你可能感兴趣的:(api自动化之:python3实现AES&base64加密)