Tomt8848 2021-12-08 19:53 采纳率: 75%
浏览 20
已结题

Python实现AES加密代码

Python实现
AES加密代码,大佬帮帮忙啊

  • 写回答

1条回答 默认 最新

  • 陈年椰子 2021-12-08 21:36
    关注

    没做过,有文档可以参考
    PyCryptodome是python一个强大的加密算法库,可以实现常见的单向加密、对称加密、非对称加密和流加密算法。直接pip安装即可:

    pip install pycryptodome
    官网地址:https://pycryptodome.readthedocs.io/en/latest/index.html

    
    from Crypto.Cipher import AES
    from Crypto.Util.Padding import pad
    from Crypto.Random import get_random_bytes
    
    # 要加密的内容
    data = b"123456"
    # 随机生成16字节(即128位)的加密密钥
    key = get_random_bytes(16)
    # 实例化加密套件,使用CBC模式
    cipher = AES.new(key, AES.MODE_CBC)
    # 对内容进行加密,pad函数用于分组和填充
    encrypted_data = cipher.encrypt(pad(data, AES.block_size))
    
    # 将加密内容写入文件
    file_out = open("encrypted.bin", "wb")
    # 在文件中依次写入key、iv和密文encrypted_data
    [file_out.write(x) for x in (key, cipher.iv,  encrypted_data)]
    对应解密代码如下:
    
    from Crypto.Cipher import AES
    from Crypto.Util.Padding import unpad
    
    # 从前边文件中读取出加密的内容
    file_in = open("encrypted.bin", "rb")
    # 依次读取key、iv和密文encrypted_data,16等是各变量长度,最后的-1则表示读取到文件末尾
    key, iv, encrypted_data = [file_in.read(x) for x in (16, AES.block_size, -1)]
    
    # 实例化加密套件
    cipher = AES.new(key, AES.MODE_CBC, iv)
    # 解密,如无意外data值为最先加密的b"123456"
    data = unpad(cipher.decrypt(encrypted_data), AES.block_size)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 1月25日
  • 已采纳回答 1月17日
  • 创建了问题 12月8日

悬赏问题

  • ¥15 r语言神经网络自变量重要性分析
  • ¥15 基于双目测规则物体尺寸
  • ¥15 wegame打不开英雄联盟
  • ¥15 公司的电脑,win10系统自带远程协助,访问家里个人电脑,提示出现内部错误,各种常规的设置都已经尝试,感觉公司对此功能进行了限制(我们是集团公司)
  • ¥15 救!ENVI5.6深度学习初始化模型报错怎么办?
  • ¥30 eclipse开启服务后,网页无法打开
  • ¥30 雷达辐射源信号参考模型
  • ¥15 html+css+js如何实现这样子的效果?
  • ¥15 STM32单片机自主设计
  • ¥15 如何在node.js中或者java中给wav格式的音频编码成sil格式呢