python如何使用AES加密文件?

ZZqieqie 2016-08-11 11:38:10
最近研究一个项目,需要用到python使用非对称加密算法加密压缩文件,在网上搜索了很久都没有找到解决办法,然后初步采用折中的办法,就是分别将文件中的内容读出来,然后使用crypto中的AES算法加密字符串,再将加密字符串写入文件中。但是这样很麻烦,首先,读文件,不同格式的文件可能读取方法不同,比如word文档,用file就无法读取。再者就是效率很慢。

我的预期流程是将所有文件先压缩成zip或其他压缩格式的压缩包,再通过对压缩文件进行AES加密。

之前在搜索解决方法时,发现java中有支持压缩文件的同时进行AES加密,如下图,所以想请教一下各位,有没有人知道解决方案呢?或者有其他想法都可以。

...全文
1023 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
tianfang 2018-01-06
  • 打赏
  • 举报
回复
引用 6 楼 llwang_10 的回复:
额。。sorry 描述漏了 对一个名为fiile.rar的文件直接进行二进制读取,AES加密生成文件file.rar.enc,然后对file.rar.enc解密,解密后的文件写入一个新文件file_new.rar。 打开file_new.rar时就会报错,unexpected end of archive
这是padding和截取的问题,要指定padding算法,还要记录文件长度,解密后要按原长度截取文件。 AES是按块加密解密,不够长度就做padding,常用算法是补0,然后加密。但是不能按去掉全部0的方式处理,如果原文件最后也是0就会出错。
llwang_10 2018-01-04
  • 打赏
  • 举报
回复
额。。sorry 描述漏了 对一个名为fiile.rar的文件直接进行二进制读取,AES加密生成文件file.rar.enc,然后对file.rar.enc解密,解密后的文件写入一个新文件file_new.rar。 打开file_new.rar时就会报错,unexpected end of archive
llwang_10 2018-01-04
  • 打赏
  • 举报
回复
楼主,我遇到了跟你类似的问题,我想把各种类型的文件进行加密,并希望可以解密还原。 我用的环境是python2.7 win64 ,加密解密包选的是PyCrypto,根据你们讨论的内容,我现在可以加密和解密还原除压缩文件以外的其他文件, 但是比如说对一个名为fiile.rar的文件直接进行二进制读取,AES加密,然后写入一个新文件file_new.rar。 打开file_new.rar时就会报错,unexpected end of archive 想请问楼主是知道如何解密 加密后的压缩文件呢?
ZZqieqie 2016-08-12
  • 打赏
  • 举报
回复
引用 3 楼 sprawling 的回复:
md5不可能会变的.可能你的计算有问题 不需要解压,整体对待就可以了,加解密都是自己处理的.
恩恩。确实是我的算法出问题了。可以正常读取压缩文件。
sprawling 2016-08-11
  • 打赏
  • 举报
回复
binary方式可以读取任何类型文件 至于效率,跟过程有关系啊, python只适用于不太注重效率的应用,如果对效率有高要求,改别的方式吧
sprawling 2016-08-11
  • 打赏
  • 举报
回复
引用 2 楼 xw370457549 的回复:
[quote=引用 1 楼 sprawling 的回复:] binary方式可以读取任何类型文件 至于效率,跟过程有关系啊, python只适用于不太注重效率的应用,如果对效率有高要求,改别的方式吧
感谢回复。另外有个疑问: 用binary方式读文件ok,但是可以直接读压缩文件不呢?我尝试着读了一下,发现读出来的内容md5值变了。 如果这种方式读不了,有没有其他可以直接读取压缩文件的方法呢?不然需要先解压在一个一个去加密。[/quote] md5不可能会变的.可能你的计算有问题 不需要解压,整体对待就可以了,加解密都是自己处理的.
ZZqieqie 2016-08-11
  • 打赏
  • 举报
回复
引用 1 楼 sprawling 的回复:
binary方式可以读取任何类型文件 至于效率,跟过程有关系啊, python只适用于不太注重效率的应用,如果对效率有高要求,改别的方式吧
感谢回复。另外有个疑问: 用binary方式读文件ok,但是可以直接读压缩文件不呢?我尝试着读了一下,发现读出来的内容md5值变了。 如果这种方式读不了,有没有其他可以直接读取压缩文件的方法呢?不然需要先解压在一个一个去加密。

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧