python3 使用AES加解密

  • 安装Crypto模块,依赖库pycryptodome
conda install pycryptodome

key字符长度决定加密结果,长度16:加密结果AES(128),长度32:结果就是AES(256)
IV 字符串长度是16

from Crypto.Util.Padding import pad
import base64
import random
from base64 import b64decode, b64encode
from Crypto.Cipher import AES

# 去除补位
unpad = lambda s: s[:-ord(s[len(s) - 1:])]

def aes_encrypt(key, iv,aes_str):
    try:
        aes = AES.new(key.encode('utf-8'), AES.MODE_CBC,iv.encode('utf8'))
        pad_pkcs7 = pad(aes_str.encode('utf-8'), AES.block_size, style='pkcs7')  # 选择pkcs7补全
        encrypt_aes = aes.encrypt(pad_pkcs7)
        # 加密结果
        encrypted_text = str(base64.encodebytes(encrypt_aes), encoding='utf-8')  # 解码
        encrypted_text_str = encrypted_text.replace("\n", "")
    except:
        encrypted_text_str="aes_encrypt error"
    
    return encrypted_text_str


def aes_decrypt(key,iv,text):
    try:
        encrypted_text = b64decode(text)
        cipher = AES.new(key=key.encode(), mode=AES.MODE_CBC, IV=iv.encode())
        decrypted_text = cipher.decrypt(encrypted_text)
        return unpad(decrypted_text).decode('utf-8')
    except:
        decrypted_text="text error"
        return decrypted_text
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值