簡體   English   中英

如何使用python從非分離的二進制gnupg簽名中提取原始數據?

[英]How to extract the original data from a non detached binary gnupg signature with python?

我如何從未分離的二進制簽名中獲取原始數據

import gnupg

gpg = gnupg.GPG(gnupghome='/tmp/testGPG')

params = {
 'Key-Type': 'DSA',
 'Key-Length': 1024,
 'Name-Real' : 'Real Name',
 'Expire-Date': 0,
}
cmd = gpg.gen_key_input(**params)
gpg.gen_key(cmd)

data = str.encode('To be signed')

sig = gpg.sign(data, detach=False, binary=True)

res = gpg.verify(sig.data)

print(res.data)

我希望res.data等於orig_data但這只是b''

最簡單的方法是“解密”該數據。 我只是在我的ipython shell中嘗試過:

In [18]: gpg.import_keys(private_key).count
Out[18]: 1

In [19]: signature = gpg.sign("Some data to sign")

In [20]: gpg.decrypt(signature.data).data
Out[20]: b'Some data to sign\n'

請注意,您提供的代碼段對我不起作用。 GPG抱怨無法生成密鑰:

[GNUPG:] PINENTRY_LAUNCHED 9678 curses:curses 1.0.0 ? ? ?
gpg: DBG: chan_3 -> END
gpg: DBG: chan_3 <- ERR 83918950 Inappropriate ioctl for device <Pinentry>
gpg: agent_genkey failed: Inappropriate ioctl for device
gpg: key generation failed: Inappropriate ioctl for device

不會使您的代碼失敗並產生空簽名!

也許這是我的本地問題。 但是在開始對數據進行簽名/驗證之前,請務必確保成功完成了密鑰生成/密鑰導入過程! 否則,您可能會變得怪異或暴露敏感信息。

暫無
暫無

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

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