zoukankan      html  css  js  c++  java
  • 使用Python实现AES(256)加密,ECB模式,pkcs7补全(AES五种加密模式(CBC、ECB、CTR、OCF、CFB))

    AES加密方式有多种,根据实际情况而定,下述代码为ECB模式,AES(256),pkcs7补全

    Python3实现AES加密,需要安装pycryptodome第三方库。

    安装方式:

    pip install pycryptodome

    代码:

    from Crypto.Util.Padding import pad
    from Crypto.Cipher import AES
    
    
    def aes_cipher(key, aes_str):
        # 使用key,选择加密方式
        aes = AES.new(key.encode('utf-8'), AES.MODE_ECB)
        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("
    ", "")
        # 此处我的输出结果老有换行符,所以用了临时方法将它剔除
    
        return encrypted_text_str
    
    
    if __name__ == '__main__':
        # key的长度需要补长(16倍数),补全方式根据情况而定,此处我就手动以‘0’的方式补全的32位key
        # key字符长度决定加密结果,长度16:加密结果AES(128),长度32:结果就是AES(256)
        key = "ABCDEFGHIJKLMN000000000000000000"
        # 加密字符串长同样需要16倍数:需注意,不过代码中pad()方法里,帮助实现了补全(补全方式就是pkcs7)
        aes_str = "abc"
        encryption_result = aes_cipher(key, aes_str)
        print(encryption_result)

    这里的方法是可以实现,AES五种加密模式(CBC、ECB、CTR、OCF、CFB)的

    使用 AES.new()方法时,第二个参数可以选择AES的不同的加密模式,根据需要选择;
    pad()方法的style参数(补全方式),同样是可以灵活变动的
    
    
  • 相关阅读:
    jQuery禁用或启用
    ASP.NET MVC一次删除多笔记录
    在你的ASP.NET MVC中使用查找功能
    Get radio selected value
    绑定一个值给radio
    ASP.NET MVC实现权限控制
    为Guid数据类型的属性(property)赋值
    Razor语法中绑定一个值给checkbox
    判断IEnumerable<T>集合中是否包含有T对象
    SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.
  • 原文地址:https://www.cnblogs.com/shenzhuang/p/10302182.html
Copyright © 2011-2022 走看看