Python实现AES+BASE64加密

公司产品的密码需要用AES加密并base64后传给服务器,代码是java写的,但我需要用python来写接口测试,网上找了攻略并与java代码结果对照,实现如下:

问题1:base64的时候,若选择urlsafe_b64encode方式,会与java在部分字符上不一致,比如+变-,/变_。所以改成encode string方式。

# -*- coding: utf-8 -*-
from Crypto.Cipher import AES
import base64

"""
aes加密算法
padding : PKCS5
注:python 2.7
"""

#加密
def encryt(str, key):
    BS = AES.block_size
    pad = lambda s: s + (BS - len(s) % BS) * chr(BS - len(s) % BS)
    cipher = AES.new(key, AES.MODE_ECB,str)
    msg = cipher.encrypt(pad(str))
    msg = base64.encodestring(msg)
    return msg

#解密
def decrypt(enStr, key):
    unpad = lambda s: s[0:-ord(s[-1])]
    cipher = AES.new(key, AES.MODE_ECB)
    decryptByts = base64.decodestring(enStr)
    msg = cipher.decrypt(decryptByts)
    msg=unpad(msg)
    return msg

你可能感兴趣的:(Python实现AES+BASE64加密)