簡體   English   中英

使用 python-gnupg 解密用 gpg 加密的文件

[英]Using python-gnupg to decrypt file encrypted with gpg

我有一個使用 gpg 創建對稱加密文件的過程:

gpg --batch --passphrase=mypassphrase -c configure.txt

只要我有密碼,我就可以對任何用戶使用gpg解密加密文件。 這正如預期的那樣。

然后我運行了一個 python 服務,它定期下載這個文件,解密它,並使用定義的配置。 好吧,它應該解密它,但事實並非如此。 這是一個代碼清單:

import urllib.request
import gnupg

gpg = gnupg.GPG()
key = 'mypassphrase'
response = urllib.request.urlopen('http://www.example.org/configure.txt.gpg')
encrypted_file = response.read()
file = gpg.decrypt(encrypted_file, passphrase=key)

print(str(file))

print是空白的。 如果我檢查file對象,我會看到以下屬性:

{
    '_gpg': <gnupg.gnupg.GPG object at 0x7f3d84675a90>,
    'valid': False,
    'status': 'decrypt 4294967295',
    'fingerprint': None,
    'pubkey_fingerprint': None,
    'key_id': None,
    'signature_id': None,
    'creation_date': None,
    'timestamp': None,
    'sig_timestamp': None,
    'username': None,
    'expire_timestamp': None,
    'trust_level': None, 
    'trust_text': None, 
    'subpackets': {}, 
    'notations': {}, 
    '_last_notation_name': None, 
    'data': b'', 
    'ok': False, 
    'data_format': None, 
    'data_timestamp': None, 
    'data_filename': None, 
    'stderr': 'gpg: no valid OpenPGP data found.\n[GNUPG:] NODATA 1\n[GNUPG:] NODATA 2\n[GNUPG:] FAILURE decrypt 4294967295\ngpg: decrypt_message failed: Unknown system error\n'
}

我也嘗試過直接打開文件並跳過urlopen以防傳輸出現問題。 但是,生成的encrypted_file顯示了相同的字節,並最終顯示了相同的錯誤和空結果。

我已經對此進行了研究,直到我臉色發青。 即使是現在,我可能已經從各種幫助站點打開了十幾個選項卡,其中大部分來自 SO。 他們都在做我正在做的事情,但不完全是,最終也不是我的解決方案。 stderr中搜索文本主要導致很多人在下載和安裝密鑰時出錯。

這個 SO question似乎是最接近的,但他們沒有使用對稱加密,所以他們遇到了用戶證書和密鑰問題。 就像我說的,只要我有密碼,我就可以和任何用戶一起解密文件,所以我認為這不是我的問題。

我什至還沒有成為文件加密專家,而且我確信我做出了某種錯誤的假設。

干杯!

您正在使用以下說明

gpg = gnupg.GPG()

而是在 GPG() 中提供 gnupghome(key 的路徑)

gpg = gnupg.GPG(gnupghome='/home/linuxman/.gnupg')

其中'/home/linuxman/.gnupg'是列出鍵的路徑。

使用gpg --list-keys (或) gpg --list-secret-keys查找密鑰和列出密鑰的路徑

通常這個路徑是主目錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM