日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

aes离线解密工具_如何在Python中解密OpenSSL AES加密文件?

發(fā)布時(shí)間:2025/3/11 python 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 aes离线解密工具_如何在Python中解密OpenSSL AES加密文件? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

OpenSSL為AES加密提供了一種流行的(但不安全 - 見下文!)命令行界面:

openssl aes-256-cbc -salt -in filename -out filename.enc

Python以PyCrypto包的形式支持AES,但它只提供工具。如何使用Python / PyCrypto解密使用OpenSSL加密的文件?

注意

此問題過去也涉及使用相同方案的Python加密。我已經(jīng)刪除了那部分以阻止任何人使用它。不要以這種方式加密任何數(shù)據(jù),因?yàn)樗环辖裉斓臉?biāo)準(zhǔn)。你應(yīng)該只使用解密,除了后向兼容性之外沒有其他原因,即當(dāng)你別無選擇時(shí)。想要加密?如果可能的話,使用NaCl / libsodium。

解決方案

鑒于Python的普及,起初我很失望,沒有完整的答案可以找到這個(gè)問題。我花了相當(dāng)多的時(shí)間在這個(gè)板上閱讀不同的答案,以及其他資源,以使其正確。我想我可能會(huì)分享結(jié)果以供將來參考,或許可以復(fù)習(xí); 我絕不是加密專家!但是,下面的代碼似乎無縫地工作:

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_length+iv_length]def decrypt(in_file, out_file, password, key_length=32): 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)

如果您認(rèn)為有機(jī)會(huì)對(duì)此進(jìn)行改進(jìn)或?qū)⑵鋽U(kuò)展為更靈活(例如,使其無鹽工作,或提供Python 3兼容性),請隨意這樣做。

注意

這個(gè)答案過去也涉及使用相同方案的Python加密。我已經(jīng)刪除了那部分以阻止任何人使用它。不要以這種方式加密任何數(shù)據(jù),因?yàn)樗环辖裉斓臉?biāo)準(zhǔn)。你應(yīng)該只使用解密,除了后向兼容性之外沒有其他原因,即當(dāng)你別無選擇時(shí)。想要加密?如果可能的話,使用NaCl / libsodium。

最后多說一句,小編是一名python開發(fā)工程師,這里有我自己整理了一套最新的python系統(tǒng)學(xué)習(xí)教程,包括從基礎(chǔ)的python腳本到web開發(fā)、爬蟲、數(shù)據(jù)分析、數(shù)據(jù)可視化、機(jī)器學(xué)習(xí)等。想要這些資料的可以關(guān)注小編,并在后臺(tái)私信小編:“01”即可領(lǐng)取。

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

總結(jié)

以上是生活随笔為你收集整理的aes离线解密工具_如何在Python中解密OpenSSL AES加密文件?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。