咱也不是学计算机的,咱也不是学网络安全的,咱更不是学密码学的,所以东拼西凑一堆代码,能用就行。

该加解密的秘钥是自己输入的密码加电脑固定序列号,包括网卡MAC地址、CPU序列号、硬盘序列号、主板序列号、BIOS序列号。
这样可以保证加密文件只能在加密时的计算机打开,在其他人的计算机无法打开,不想用这个功能的可以在生成秘钥那里把序列号删掉。
序列号的获取参考我写的这篇文章:
https://blog.csdn.net/weixin_42845306/article/details/114899172

我下面的代码,就不写获取序列号的函数了。

加密部分的代码如下:

#引用获取序列号的函数
import os
from Crypto.Cipher import AESfilename=input("请输入要加密的文件名:")
key=input("请输入密码:")
#秘钥,此处需要将字符串转为字节
key = key+get_bios_id()+get_cpu_id()+get_board_id()+get_disk_id()+get_mac_address()
key = str.encode(key)
if len(key)>32:#秘钥不能超过32key=key[0:32]#加密内容需要可以被16整除,所以进行空格拼接
def pad(text):while len(text) % 16 != 0:text += b' 'return text
#加密秘钥需要可以被16整除,所以进行空格拼接
def pad_key(key):while len(key) % 16 != 0:key += b' 'return key
#进行加密算法,模式ECB模式,把叠加完的秘钥传进来
aes = AES.new(pad_key(key), AES.MODE_ECB)
#加密内容,此处需要将字符串转为字节data = bytearray(os.path.getsize(filename))
with open(filename, 'rb') as f:        f.readinto(data)    f.close()    #将数据传入加密类中,结果为字节类型
encrypted_data = aes.encrypt(pad(data))with open(filename+"_encryption", 'ba') as f:f.write(encrypted_data)
f.close()print("成功,请查看文件夹下"+filename+"_encryption")

解密部分的代码如下:

#引用获取序列号的函数
import os
from Crypto.Cipher import AES
filename=input("请输入要解密的文件名:")
key=input("请输入密码:")
#秘钥,此处需要将字符串转为字节
key = key+get_bios_id()+get_cpu_id()+get_board_id()+get_disk_id()+get_mac_address()
key = str.encode(key)
if len(key)>32:#秘钥不能超过32key=key[0:32]#加密秘钥需要可以被16整除,所以进行空格拼接
def pad_key(key):while len(key) % 16 != 0:key += b' 'return key
#进行加密算法,模式ECB模式,把叠加完的秘钥传进来
aes = AES.new(pad_key(key), AES.MODE_ECB)#下面是解密
data = bytearray(os.path.getsize(filename))
with open(filename, 'rb') as f:        f.readinto(data)    f.close()
decryption_data = aes.decrypt(data)
#将数据传入加密类中,结果为字节类型with open(filename+"_decryption", 'ba') as f:f.write(decryption_data)
f.close()print("成功,请查看文件夹下"+filename+"_decryption")

我也不会密码学,不知道这个AES被破解的几率有多大。这里用到的秘钥最长32字节,32x8=256位。我看某乎有人问过:

这样我就放心多了。

python AES对称加密文件、解密文件相关推荐

  1. 编写ATL工程实现ActiveX控件调用cryptoAPI接口(三)------------AES对称加密与解密

    注:下面的代码中用了Map,Base64,log,Result等都为自定义类型,太长就不一一贴出. [cpp]  view plain  copy  print ? /* * * * 文件名称:Enc ...

  2. AES对称加密和解密算法以及Java的AES工具类

    参考资料:百度百科[高级加密标准] AES简介 1.密码学中的高级加密标准(Advanced Encryption Standard,AES),又称Rijndael加密法,是美国联邦政府采用的一种区块 ...

  3. Python代码实现MD5、AES对称加密和RSA非对称加密以及OpenSSl实践

    1.MD5加密算法 1.1 MD5加密的特点 不可逆运算 对不同的数据加密的结果是定长的32位和16位字符(不管文件多大都一样) 对相同的数据加密,得到的结果是一样的(也就是复制). 抗修改性 :信息 ...

  4. 如何在 Linux 上用密码加密和解密文件

    age 是一个简单的.易于使用的工具,允许你用一个密码来加密和解密文件.age 能帮你这样做.它是一个小型且易于使用的工具,允许你用一个密码加密一个文件,并根据需要解密. age 是一个简单的.易于使 ...

  5. 如何使用 Visual C# 加密和解密文件

    本文引入的命名空间: System.IO System.Security System.Security.Cryptography 本文介绍如何使用 Microsoft .NET Framework ...

  6. Linux下使用GPG(GnuPG)加密及解密文件

    文章目录 Linux下使用GPG(GnuPG)加密及解密文件 1. 简介 2.环境及版本 3.GPG公钥生成 4.查看公钥 5.查看私钥 6.导出公钥 7.导出私钥 8.加密文件 本机加密 其他电脑加 ...

  7. Python - AES SHA1PRNG 加密解密总结

    Python - AES SHA1PRNG 加密解密总结 Max.Bai 2020-11 上篇文章是当时研究AES加密的时候的记录,来龙去脉可以取看这篇 python3 - AES 加密实现java中 ...

  8. linux 怎么不检查gpg,如何在Linux上使用GPG加密和解密文件 | MOS86

    如何在Linux上使用GPG加密和解密文件... GnuPrivacy Guard (GPG) allows you to securely encrypt files so that only th ...

  9. RSA加密及AES对称加密代码实现

    最近老师布置了两个加密的作业,记录一下编码过程及遇到的问题. 对于RSA解密基本内容这里就不赘述,直接说一下编码过程把: 1:N = p*q(p.q互质,即公约数只有1)可以用辗转相除去判断 2:L是 ...

最新文章

  1. git 覆盖本地修改_Git拉力–如何使用Git覆盖本地更改
  2. 多线程_yield()和sleep()方法比较
  3. jQuery Ajax全解析
  4. Android Touch系统简介(二):实例详解onInterceptTouchEvent与onT
  5. Cocos2d-X中的ZORDER和Tag
  6. 初识Mysql(part5)--我需要知道的11条Mysql语句之过滤
  7. Python参数类型
  8. python截图直接在内存里调用_Python-按块上传FTP中的内存文件(由API调用生...
  9. 一台弹性云服务器可以挂载多块磁盘吗?
  10. 前端显示文本时的格式设置
  11. thinkphp遗留问题
  12. C语言程序设计型考册作业1,C语言程序设计作业 求解答
  13. Bitmap头文件说明
  14. 存量用户时代,方兴未艾的客户服务SaaS
  15. 安利一下好用免费的思维导图绘制软件(实在篇)
  16. 面试产品经理时如何回答“为什么想做产品经理”这个问题
  17. 核心层,汇聚层,接入层,交换机性能差别
  18. PS 常用工具使用汇总
  19. GBase 8c索引类型
  20. NYOJ 817 英文藏头诗

热门文章

  1. swift中的只读属性实现,很简单
  2. Mapped Statements collection already contains value for*
  3. timestamp和recycle同时开启,导致连接成功率降低
  4. 操作系统复习笔记(二)
  5. Linux的企业-Codis 3集群搭建详解
  6. “朝阳群众”APP上线!解读怎么做一款深入群众的应用
  7. JavaScript权威指南 - 数组
  8. javascript arguments对象研究--针对jquery源码研究再研究
  9. Windows7下通过VHD安装Windows8系统
  10. Windows NT Backup - 恢复工具 - Windows Vista的迁移工具