第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

蟒蛇:使用 GPG 和子進(jìn)程的對稱加密

蟒蛇:使用 GPG 和子進(jìn)程的對稱加密

慕尼黑8549860 2022-09-13 20:09:07
我正在嘗試實現(xiàn)Python中的以下bash命令提供的功能。echo "$DATA" | gpg --symmetric --armor --batch --passphrase "${KEY}"到目前為止,我嘗試使用,但很難傳遞數(shù)據(jù)。我嘗試在要發(fā)送到的參數(shù)列表中將其作為命令給出,但這實際上與整個事情相呼應(yīng)。subprocesssubprocesscmd = f"| gpg --symmetric --armor --batch --passphrase {key}".split()                                                  temp = ["echo", f"\"{data}\""]temp.extend(cmd)                                                                                                                      res = subprocess.run(temp, stdout=subprocess.PIPE, universal_newlines=True)                                                          encrypted = res.stdout.strip()我也對使用python-gnupg模塊感興趣,但還沒有弄清楚如何用它復(fù)制上述內(nèi)容。提前感謝您的任何幫助!
查看完整描述

3 回答

?
慕的地8271018

TA貢獻(xiàn)1796條經(jīng)驗 獲得超4個贊

可以將 參數(shù)用于 /:inputrun()check_output()


from getpass import getpass

import subprocess


key = getpass("KEY: ")

data = b'Symmetric Encryption with GPG and Subprocess'

command = ["gpg", "--symmetric", "--armor", "--batch", "--passphrase", key]


out = subprocess.check_output(command, input=data, universal_newlines=False)

請注意,默認(rèn)情況下,GNU 將附加一個換行符。用于不打印尾隨 。無論哪種方式,您都需要小心地在Python中模仿這一點。echoecho -n\n


查看完整回答
反對 回復(fù) 2022-09-13
?
慕村225694

TA貢獻(xiàn)1880條經(jīng)驗 獲得超4個贊

如果有人想知道,我也得到了模塊為我的應(yīng)用程序工作。我堅持這個答案,因為這減少了依賴性,但也想分享這一點。python-gnupgsubprocess


gpg = gnupg.GPG()                                                                                                                     

encrypted = str(gpg.encrypt(data, recipients=None, symmetric=True, passphrase=key, extra_args=["--batch"])) 



查看完整回答
反對 回復(fù) 2022-09-13
?
開滿天機

TA貢獻(xiàn)1786條經(jīng)驗 獲得超13個贊

該模塊具有悠久的歷史,存在嚴(yán)重的安全漏洞,其中許多漏洞更有可能受到影響,因為決定使用調(diào)用外部二進(jìn)制可執(zhí)行文件。python-gnupgsubproess


相反,GnuPG 項目的建議是將 CPython 綁定用于 GPGME C API,該接口隨 GPGME 源代碼一起提供。


import gpg

from getpass import getpass


key = getpass("KEY: ")

c = gpg.Context(armor=True)

data = b"Symmetric encryption with GPGME."


ciphertext, result, sign_result = c.encrypt(data, sign=False, passphrase=key)

with open("some_file.txt.asc", "wb") as f:

    f.write(ciphertext)

由于這使用對稱加密,因此不會包含數(shù)字簽名,并且沒有要檢查的收件人密鑰。這意味著兩者都會返回。只包含任何內(nèi)容,那就是ASCII裝甲的excrypted數(shù)據(jù),可以如上所述寫入文件,也可以用它做其他事情。resultsign_resultNoneciphertext


GPGME源代碼中包含了這個非常高級的模塊的文檔,但此處提供了在線草稿版本。


查看完整回答
反對 回復(fù) 2022-09-13
  • 3 回答
  • 0 關(guān)注
  • 123 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號