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


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM