python 实现aes加密

需要使用aes加密,记录一下

import base64
from Crypto.Cipher import AES
AES_KEY = 'aw123zsc212s9ju0' # It must be 16, 24 or 32 bytes long (respectively for *AES-128*, *AES-192* or *AES-256*).
def add_to_16(text: str) -> bytes:
"""
不足16位的地方补全位数
:param text: 源字符串
:return: 补足字符串
"""
b_text = text.encode('utf-8')
# 计算需要补的为位数
if len(text) % 16:
add = 16 - (len(b_text) % 16)
else:
add = 0
return b_text + (b'\0' * add)
def encrypt_by_aes(text: str, key: str) -> str:
"""
加密函数
:param text: 源字符串
:param key: 密钥
:return: 加密字符串
"""
key = key.encode('utf-8')
text = add_to_16(text) # 如果长度不够补足 16 位
cryptos = AES.new(key, AES.MODE_ECB) # 使用ECB模式
cipher_text = cryptos.encrypt(text) # 加密
return base64.standard_b64encode(cipher_text).decode('utf-8') # 将加密结果转为base64编码输出
def decrypt_by_aes(text: str, key: str):
"""
解密函数
:param text: 加密字符串
:param key: 密钥
:return: 解密结果
"""
key = key.encode('utf-8')
text = text.encode('utf-8')
text = base64.b64decode(text) # 先使用base64解码
cryptos = AES.new(key, AES.MODE_ECB)
cipher_text = cryptos.decrypt(text) # 解密
return cipher_text.decode('utf-8').strip('\0')
if __name__ == '__main__':
source_str = 'hello'
encrypt_str = encrypt_by_aes(source_str, AES_KEY)
decrypt_str = decrypt_by_aes(encrypt_str, AES_KEY)
print(encrypt_str)
print(decrypt_str)

输出结果:

CNCNntzveSN8tZ8Y1PifWQ==
hello
posted @   守望人间  阅读(1259)  评论(0编辑  收藏  举报
编辑推荐:
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!
点击右上角即可分享
微信分享提示