zoukankan      html  css  js  c++  java
  • AES加密解密

    AES加密

    注意:

    1.密钥必须是16个字节,加密的文本必须是16字节的倍数。

    2.加密的文本是str类型,得到的加密后的结果是bytes类型。

    from Crypto.Cipher import AES
    
    # 加密
    def encrypt(message):
        '''
        加密,密钥必须16个字节,加密的文本的字节数必须是16字节的倍数
        :param message:
        :return:
        '''
    
        # 用于加密的密钥,长度必须16个字节
        key = b'xvfsdfdgaefsdfsd'
        # 初始化加密器
        cipher = AES.new(key,AES.MODE_CBC,key)
        # 将加密文本转为字节
        ba_data = bytearray(message,encoding='utf-8')
        # 获取文本的字节数
        l1 = len(ba_data)
    
        # 求余数,如果余数为0,即将16个字节加入到字节数组,如果余数不为0,将16-余数的字节加入到字节数组
        rem = l1 % 16
        if rem == 0:
            v1 = 16
        else:
            v1 = 16 - rem
        for i in range(v1):
            ba_data.append(v1)
    
        # 将16倍数字节转化为字符串
        final_data = ba_data.decode('utf-8')
        # 加密,加密文本必须是字符串,加密后得到字节类型的数据
        msg = cipher.encrypt(final_data)
        return msg     # bytes类型
    
    '''测试'''
    a = encrypt("abc")
    print(a)        # b'xc2xadLxabxefxaaxb1}x92xf22x83Lxecxf0x90'
    print(len(a))   # 16

     

    AES解密

    注意:

    1.解密的文本必须是bytes类型,而且是16的倍数

    2.解密后的结果是bytes类型,记得去除补全的字节,获取真正的数据

    3.将数据转换为str类型

    from Crypto.Cipher import AES
    
    # 解密
    def decrypt(message):
        # 密钥,必须16个字节
        key = b'xvfsdfdgaefsdfsd'
        # 初始化加密器
        cipher = AES.new(key,AES.MODE_CBC,key)
        # 解密,传入的必须是bytes类型,得到bytes类型的数据
        result = cipher.decrypt(message)
        # 去除补全的字节,获取真正的加密内容
        data = result[0:-result[-1]]
        # 转化为str类型
        return str(data,encoding='utf-8')
    
    '''测试'''
    encrypt_msg = encrypt("abc")  # b'xc2xadLxabxefxaaxb1}x92xf22x83Lxecxf0x90'
    decrypt_msg = decrypt(encrypt_msg)
    print(decrypt_msg)      # abc
  • 相关阅读:
    栈(代码分解)
    线性表(代码分解)
    绪论简概
    1006 Sign In and Sign Out (25 分)
    1005 Spell It Right (20 分)
    分支界限法解决0/1背包问题
    Sequence( 分块+矩阵快速幂 )
    Shape Number (最小表示法)
    Age of Moyu (2018 Multi-University Training Contest 7)
    [Cqoi2014]危桥 (两遍网络流)
  • 原文地址:https://www.cnblogs.com/st-st/p/10301851.html
Copyright © 2011-2022 走看看