网络推销,黑河网站seo,成交功能网站,南宁网站建设 南宁联达亿OpenSSL为AES加密提供了一种流行的(但不安全 - 见下文#xff01;)命令行界面#xff1a;openssl aes-256-cbc -salt -in filename -out filename.encPython以PyCrypto包的形式支持AES#xff0c;但它只提供工具。如何使用Python / PyCrypto解密使用OpenSSL加密的文件#…OpenSSL为AES加密提供了一种流行的(但不安全 - 见下文)命令行界面openssl aes-256-cbc -salt -in filename -out filename.encPython以PyCrypto包的形式支持AES但它只提供工具。如何使用Python / PyCrypto解密使用OpenSSL加密的文件注意此问题过去也涉及使用相同方案的Python加密。我已经删除了那部分以阻止任何人使用它。不要以这种方式加密任何数据因为它不符合今天的标准。你应该只使用解密除了后向兼容性之外没有其他原因即当你别无选择时。想要加密如果可能的话使用NaCl / libsodium。解决方案鉴于Python的普及起初我很失望没有完整的答案可以找到这个问题。我花了相当多的时间在这个板上阅读不同的答案以及其他资源以使其正确。我想我可能会分享结果以供将来参考或许可以复习; 我绝不是加密专家但是下面的代码似乎无缝地工作from hashlib import md5from Crypto.Cipher import AESfrom Crypto import Randomdef derive_key_and_iv(password, salt, key_length, iv_length): d d_i while len(d) key_length iv_length: d_i md5(d_i password salt).digest() d d_i return d[:key_length], d[key_length:key_lengthiv_length]def decrypt(in_file, out_file, password, key_length32): bs AES.block_size salt in_file.read(bs)[len(Salted__):] key, iv derive_key_and_iv(password, salt, key_length, bs) cipher AES.new(key, AES.MODE_CBC, iv) next_chunk finished False while not finished: chunk, next_chunk next_chunk, cipher.decrypt(in_file.read(1024 * bs)) if len(next_chunk) 0: padding_length ord(chunk[-1]) chunk chunk[:-padding_length] finished True用法with open(in_filename, rb) as in_file, open(out_filename, wb) as out_file: decrypt(in_file, out_file, password)如果您认为有机会对此进行改进或将其扩展为更灵活(例如使其无盐工作或提供Python 3兼容性)请随意这样做。注意这个答案过去也涉及使用相同方案的Python加密。我已经删除了那部分以阻止任何人使用它。不要以这种方式加密任何数据因为它不符合今天的标准。你应该只使用解密除了后向兼容性之外没有其他原因即当你别无选择时。想要加密如果可能的话使用NaCl / libsodium。最后多说一句小编是一名python开发工程师这里有我自己整理了一套最新的python系统学习教程包括从基础的python脚本到web开发、爬虫、数据分析、数据可视化、机器学习等。想要这些资料的可以关注小编并在后台私信小编“01”即可领取。