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
  • 相关阅读:
    2019 安装SSDT
    添加删除服务
    POWER BI 报表服务器搭建配置
    解决POWER BI权限控制问题
    asp.net core 发布后显示异常错误信息的方法
    Microsoft SQL Server 查询连接数和关闭连接数
    不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况
    SQL Server在所有表中查找内容(在整个库搜索内容)
    IIS 在.NET MVC网站下创建多个子应用程序,子站访问根目录问题
    博客网址
  • 原文地址:https://www.cnblogs.com/st-st/p/10301851.html
Copyright © 2011-2022 走看看