- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我不确定是什么导致了这个问题。我正在使用 Python 3.6.1::Anaconda 4.4.0(64 位)和 gnupg 版本 2.3.1。
我的代码如下:
import gnupg
gpg = gnupg.GPG(binary='C:/GnuPG/bin/gpg.exe', homedir='./pgp')
pri_key = 'pri_key.pgp'
pub_key = 'pub_key.pgp'
key_data = open(pri_key, 'rb').read()
import_result = gpg.import_keys(key_data)
print(import_result.results)
gpg.list_keys(secret=True) # []
gpg.list_keys()
'''
[{'algo': '1',
'date': '1510176716',
'dummy': '',
'expires': '',
'fingerprint': '...',
'keyid': '...',
'length': '2048',
'ownertrust': '-',
'rev': {},
'sigs': {'Alex F <alexf@outlook.com>': []},
'subkeys': [['...', 'e']],
'trust': '-',
'type': 'pub',
'uids': ['Alex F <alexf@outlook.com>']}]
'''
我的私钥如下:
-----BEGIN PGP PRIVATE KEY BLOCK-----
Version: OpenPGP.js v2.0.0
Comment: http://openpgpjs.org
xcLYB...
-----END PGP PRIVATE KEY BLOCK-----
我也能够很好地读取公钥。
我也在这里开了一个案例https://github.com/isislovecruft/python-gnupg/issues/216 .
更新:
感谢 @fuglede 提供 GnuPG 版本 1.4.2 的提示。我可以从这里下载它https://lists.gnupg.org/pipermail/gnupg-announce/2015q4/000382.html 。
下载后我可以成功读取私钥。然而,当我尝试读取我的公钥时,它似乎没有被加载。这是带有附加输出的完整代码。
import gnupg
gpg = gnupg.GPG(binary='C:/GnuPG/bin/gpg.exe', homedir='./pgp')
pri_key = 'private_key.pgp'
pub_key = 'public_key.pgp'
'''
-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: OpenPGP.js v2.0.0
xsBNBFoDd8wBCADGDhfQRVyBY7ttCRyRwR6wrzmmQir6cPS+w/3ftQbeCyJ7
...
f9VcgxXoj2EOmCVrUu5kOYwsDgZJnz/+yGs1afaAXwr/VPIusHplkdYqWcgO
m0h4GrUKz1NJArQd0lo=
=ZV3T
-----END PGP PUBLIC KEY BLOCK-----
'''
gpg.list_keys()
'''
[]
'''
key_data_pri = open(pri_key, 'rb').read()
import_result = gpg.import_keys(key_data_pri)
print(import_result.results)
'''
[{'fingerprint': '61A...37E', 'status': 'Contains private key\n'}, {'fingerprint': '61A...37E', 'status': 'Entirely new key\n'}]
'''
key_data_pub = open(pub_key, 'rb').read()
import_result = gpg.import_keys(key_data_pub)
print(import_result.results)
'''
[{'fingerprint': '61A...37E', 'status': 'Not actually changed\n'}]
'''
gpg.list_keys(secret=True)
'''
[{'algo': '1',
'date': '1510176716',
'dummy': '',
'expires': '',
'fingerprint': '61A...37E',
'keyid': '...',
'length': '2048',
'ownertrust': '',
'rev': {},
'sigs': {'Alex F <alexf@outlook.com>': []},
'subkeys': [],
'trust': '',
'type': 'sec',
'uids': ['Alex F <alexf@outlook.com>']}]
'''
gpg.list_keys()
'''
[{'algo': '1',
'date': '1510176716',
'dummy': '',
'expires': '',
'fingerprint': '61A...37E',
'keyid': '...',
'length': '2048',
'ownertrust': '-',
'rev': {},
'sigs': {'Alex F <alexf@outlook.com>': []},
'subkeys': [['FBBD...312', 'e']],
'trust': '-',
'type': 'pub',
'uids': ['Alex F <alexf@outlook.com>']}]
'''
unencrypted_string = 'Who are you? How did you get in my house?'
encrypted_data = gpg.encrypt(unencrypted_string,
'alexf@outlook.com',
'alexf@outlook.com',
always_trust=True)
encrypted_string = str(encrypted_data)
print ('ok: ', encrypted_data.ok)
print ('status: ', encrypted_data.status)
print ('stderr: ', encrypted_data.stderr)
print ('unencrypted_string: ', unencrypted_string)
print ('encrypted_string: ', encrypted_string)
'''
ok: False
status: invalid recipient
stderr: gpg: --recipient: skipped: public key not found
[GNUPG:] INV_RECP 1 --recipient
gpg: [stdin]: encryption failed: public key not found
unencrypted_string: Who are you? How did you get in my house?
encrypted_string:
'''
我认为现在的问题是公钥没有被读入,正如读取时Not 实际上更改\n
所证明的那样。当我尝试加密时,它显示stderr:gpg:--recipient:skipped:未找到公钥
。
最佳答案
这只是答案的一半,但显然不适合评论。你所做的在 Python 3.6.3、python-gnupg 2.3.1 和 gpg 1.4.20 中对我来说效果很好,也在 Windows 上:
C:\Users\username>gpg --version
gpg (GnuPG) 1.4.20
Copyright (C) 2015 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Home: ~/.gnupg
Supported algorithms:
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA
Cipher: IDEA, 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH,
CAMELLIA128, CAMELLIA192, CAMELLIA256
Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224
Compression: Uncompressed, ZIP, ZLIB, BZIP2
C:\Users\username>pip show gnupg
Name: gnupg
Version: 2.3.1
Summary: A Python wrapper for GnuPG
Home-page: https://github.com/isislovecruft/python-gnupg
Author: Isis Agora Lovecruft
Author-email: isis@patternsinthevoid.net
License: GPLv3+
Location: c:\users\username\appdata\local\continuum\anaconda3\lib\site-packages
Requires: psutil
C:\Users\username>ipython
Python 3.6.3 |Anaconda custom (64-bit)| (default, Oct 27 2017, 12:22:41) [MSC v.1900 64 bit (AMD64)]
Type 'copyright', 'credits' or 'license' for more information
IPython 6.1.0 -- An enhanced Interactive Python. Type '?' for help.
In [1]: import gnupg
In [2]: gpg = gnupg.GPG(binary='C:/Users/username/AppData/Local/Programs/Git/usr/bin/gpg.exe', homedir='./gpg')
In [3]: gpg.list_keys()
Out[3]: []
In [4]: key_data = '-----BEGIN PGP PRIVATE KEY BLOCK-----\nVersion: GnuPG v1\n\nlQPGBFoTDywBCADbf6BS2JOp3KUP7IHBvuS/xX8zPHHET7DZsQc/DluN+nhHUwHm\n+aERadI642O5kWsd
...: EyhKWXjT8pmdZXiC154CqjRbFN7l5Gbs8juYI9VmM++Aw86e\nePcGARGwLW9WMu5z9/5C/5wkHXsOucguV0oLSuAUa5g6odfRoffSbw5FOuRcte6y\n3xG8Jz/zWAYFIV6VIvL0FRCI/kGhkCGlXkmqxp
...: bnSDDKej5b0U7EtqQ/tqaoNLAK\nbijPAT1ZeZ4YtVwlAIrGxBCgyUdz3tuOisX5vf0fbyr7SGG3tF1Pk5MTcOfG5VT5\nGWNvcy+pQ1OK/BIPNw6z/b8r2vaf+hQw5cw9ABEBAAH+BwMCweSq9poFLPFg
...: TPjE\nC3u8qA5rA/UCOA007+MRBugTHWgJubl+67m4auyc8xh2qiFdoMcNE/rXO0i9SBIZ\nu4iVsnG5wONoLlPoUXopPtucmuwHvUQfPRcHnYkNyJfQn2Y2ONw9Betjw+cvAjM5\nr3ROn+zNG7ctKT8B
...: QXZH2GrF95xkpYJ8g2rukEt0i5Zker2wwDfeLqXHTsJtosBd\npJHiFeSuZRIh/F1xUfPtK37TyjqsTI1EuEg4g9SNVgc6Siynr2v5oTe7NP9lnTMV\nmZP7qVU3DuaamaWYCzh0oN1DCFrTebJW4W4jWp
...: JgcM176EFFBg6udf/EpHfl+3j+\nMY3k3r9HBrXJ4faHp7ItfFzjeLEk+Parg0oHaJjptQYjuOISaA85KSAWuE10PKcU\nPTiGw8f1tcfh8sCepZeNqjxztzmPD+XNDm0Q/IbNNgyzsUu8LeNoSDhmR3Qe
...: YJmN\n6kN8PGfDEyWr0fGvnwzi+qMRvlJEbJBD/aRcibM8N9BBlFm4oCKfpIBojpLCO6+m\nEZpRIsAqY+x/7D0+O7yUbEMRhsj4lO8rRKLCb3rOF4UYIZdhXwCJ5Zp1dTG+qxU8\nNAN6JYzMxZd0u4PJ
...: jEqmPO5kwunEyXtBC7P5nEUezoz00IFRdvsAxWPApaPXI8vY\npRlwVeWkfgKzTyFsev0XW6D5d90mF2gcrlRdtFNFtLONd5/i18jbXe7sqMCzU0kA\nYaCkmdm7TovAuJPduuCcUk6L8+Glm3b5t+RolN
...: NXd7xZkdFw23l80YOIsjiW6fY4\n0Imiftp96u3idl29tzGLrzm3Rm2Q6zD6OMAfYEYArpehflJc15iV06gk3nldUWLw\nzApeZFX95BSBac3dKHRzr445l7dND6FZARwEcmJR3pUgrX/COdnp93H0gNnT
...: ZDl5\nB4WxZKE6FJg0tB1xd2VxZXEgKHF3ZSkgPHF3ZXF3ZUBxd2UucXdlPokBOAQTAQIA\nIgUCWhMPLAIbAwYLCQgHAwIGFQgCCQoLBBYCAwECHgECF4AACgkQEF/b6eGSNHJX\nUQf+NHIhrGuMk1WZ
...: Ptu3GMoyoRZoCG1waqJpSRb3yDAwO9oNw1XwEGHEGjIsL7gF\n4E+QyOpsFa8CL8d+MwN0+dTd9369L7avEC41GjboDfTBUDfi9BU5oHMNacBajfth\nWNRtizjAOU0GYw1ZtsBHzgGcylSObr0Tds8N2C
...: Ffzi0ta3WNTJifBNxlwCbFW6t5\nIxCa+2bfqUqpK6XL57GQtD/iIxketYpzXXt85YE3tocxmvy9BJw+3Y7uN6NSN37N\n3TWSKi9ytibdwfMNZ0RLZPJUlUQK0wgzMAZ+RS7KWJqcPg9oEv7MPqlVXbGH
...: y1bq\nd4H7s9LyzkY46YtHhJ2m9/TWA50DxgRaEw8sAQgAvSNV6QoXElp0Ak/QyXnE03aF\n81tx3JEc9Zxkp7cdgaY+IwZxzJ+nQSYgbD1MqDhomvTZ7KXh66LBgwGsugZNkaJe\njHUZiK8wNg2NJuEs
...: HU2gaX5v0DBxou1TGVPlm9Ltb1PnkIDYuRjM0GTKKK1FBTOL\nia+/8XQyQZD72dLSUrMoD0vp4xG4dXsKEqWyw+aBGrnhOx7t/GGFkL7I3GunbBAb\nfqSK36hjbynf29rZJYHebjBv9qq2tpcmYCgGvg
...: bGMxDrMscI0LfJZzPI5X4sl1Gh\n374Qn7eFgSbNc6+TuEWYskkTiX4ebKbkcHpBRlCOhDLsoVixikLqwtJvmajiEQAR\nAQAB/gcDAsHkqvaaBSzxYLGVCLkCXXKa7HiWbJY+BjIk/lS9cYoUqFOqlKup
...: JaDJ\nnpKAyd30BWvQjcIGThGJvYBy30JxgDoFwEcZQ5U07qN8bW0cSkDYkEtmurrs46TB\n7++n3Ut/GT1IB/nULzmMMQ5g5vjMfT9hT15P/fpz2cVcz13aidvVx+44sl37H6zI\nw927BzxBF0HacyeE
...: xIZEZpsBq+yEIIhjEIL5xSDD09iO3vGYgVsHXT1WDP+OuSqN\nVXk6/85JG+rmIxHWsk/8rc7BbYzb9e3yVYQTACR3wTKbv8KzUykAI6STEEBICB5m\nTgc/ST9jgSF2+dwCa6s+DDnVzrBj90yZD1r1yV
...: 6unCusXV5n8q+NBTWKCfQCQYIv\nyU86IB2kn606mGpPa6WkaWamyILc4Vj93LLsiduWwcIFMRhKUBXWJ9P+88ZQeP8F\n6CgbdsoVHfZu+He69pAwvWFxuySNCxdOWYRACvNCCqwQ4nrWDfX7MtMNcsIP
...: FP0m\nC/BWs0TxygYhzq/G8reF93lyJp8biYRI4mjiZSVd+YdEvSTnbvkGxnx698GbQqOO\n45Xnj/AoafwlNyrcqIJkXYi3Ih6EaKlUv1/pNvq4iu+uU/OhNfzEilin8vvWVB/E\nOzvtjnIz+egdcsUh
...: 7FfCR5FO09zVww8hcZauM2GpqxQ8FScSYWsVcOnjxXe7fUGR\nyEoMMvryZUjM/zkrvOJCn33yYOVZCiD5WFvx2WlQsQuT9cVOWTf2VXuVjTyAlaaY\nzclFjv5n+fZNW7V6Z18vmQ3gQEj5FSTqSV3f0v
...: BT4H6/huHWc9RAKWge5w8tLJHW\nxSL67l3E8yJuIklD6/wQi1zxd6evD5k987yDEAxiVReUtPxJPMT1DqARj/Isa5OX\n5S+kk0FraUZcPs2mO4cYoYSBwGX4SBszpZaEYYkBHwQYAQIACQUCWhMPLAIb
...: DAAK\nCRAQX9vp4ZI0cu+0CACH0DgG3qmsnq9bxozGeCUtztNbbJQOFgU2emaIzHDB/8Pl\n4qCmzTRHVxEixZ2u59gG/wqaQuBXw+44oLuQUjjOMm1iYlz2APgYBUq7KOpTh6I+\nEarV1HBFDsoAhdQP
...: XuXbSCSEdBEIJbWXNgKpFZiDXXMnRUCdBalXYMOWCnCnzglt\nDoe//s7/9xT2snCEGJ9Ebs42N/6IGLEKIpJymU7FcaEb1/f2k9aYPSiZxKHZDidC\nyKAZxPA+YMvsstTH8OqH391v6sJ+yK5cO5dnkA
...: 1/oEhrnKqDvlBT6rbo2GbB4X44\ngsb5u9eBimrpH66QsMQSnHXE1aw5fqajE5t+MWBd\n=MpyL\n-----END PGP PRIVATE KEY BLOCK-----\n'
In [5]: import_result = gpg.import_keys(key_data)
In [6]: import_result.results
Out[6]:
[{'fingerprint': 'D2E8871D9EFFD91B1569FD48105FDBE9E1923472',
'status': 'Contains private key\n'},
{'fingerprint': 'D2E8871D9EFFD91B1569FD48105FDBE9E1923472',
'status': 'Entirely new key\n'}]
In [7]: gpg.list_keys(secret=True)
Out[7]:
[{'algo': '1',
'date': '1511198508',
'dummy': '',
'expires': '',
'fingerprint': 'D2E8871D9EFFD91B1569FD48105FDBE9E1923472',
'keyid': '105FDBE9E1923472',
'length': '2048',
'ownertrust': '',
'rev': {},
'sigs': {'qweqeq (qwe) <qweqwe@qwe.qwe>': []},
'subkeys': [],
'trust': '',
'type': 'sec',
'uids': ['qweqeq (qwe) <qweqwe@qwe.qwe>']}]
您能否提供观察到的行为所适用的 key_data
值?
更新答案以回答更新的问题:
用于GPG.encrypt
的语法已关闭。根据the documentation ,数据
的加密是通过gpg.encrypt(data,recipients)
执行的,其中“recipients
是这些接收者的 key 指纹列表。 ”在上面的示例中,这意味着消息可以按如下方式加密:
In [54]: encrypted_data = gpg.encrypt('test', 'D2E8871D9EFFD91B1569FD48105FDBE9E1923472')
In [55]: encrypted_data.ok, str(encrypted_data)
Out[55]:
(True,
'-----BEGIN PGP MESSAGE-----\n\nhQEMA6vzRkOvQDF8AQgAkykuXaK7sujYU4uZseqXsYpKw7TZdSagAu86jOq+JMyC\nGygnWdcUSevilDE97RE6TJjrYa3Q+fM+Dn9xwtaco2g6W/ZKF9EPIrLuVaC8NpM4\nuKNm5SHE9orHPbZpFw3w1JuC8uZqk/XaNXHz7V7TD2KAbyxZ4qMtvhuSYvaU00Rg\nIrPOc66S8PtnKIcpjVUgz33KKr1Pnoa9dMcrfJfpvKU2iaAflgTW0jF7WlNwk5eE\n7ZkTILbpN1LNqBg4n9B5hs/oZ0IheQvcbh58SwIODARWtUlxLWGIWIZ1+AEhXmUs\nDl0BI98gw46p2NffetdAjhF8LqM7MmJ73+37ZwMhQ9I/AdE6gkSousPHg5dRmU1y\n0CE5kzA8K+qCgschy/t3cRtBPaf9mXBCcodcF9VHIZrP7ACO7JLSl5hi5iEKPtfm\n=P1fg\n-----END PGP MESSAGE-----\n')
关于python - 使用 python gnupg,我的私钥被作为公钥读入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47397609/
这是一个基于 Python 的 GnuPg 用户友好的前端程序。 一直试图找到只导入一个公钥而不是所有公钥的命令。 这将导入文件中的所有键 gpg --import Some_pub_keys.txt
我需要生成一个 PGP 公钥/私钥。我以前从来没有这样做过。我已阅读文档,但给出的示例与我在计算机上看到的不匹配。 我用 gnupg 生成了 key 。 我运行命令列出公钥 gpg --list-ke
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 8年前关闭。 Improve thi
几年前,我改变了我的真实姓名。然后我自然想将名称更改为我的公共(public)和私有(private) GPG key 。我已经设法用我的新真实姓名为我的公钥生成子 key ,并且我已经设法用我以前的
我想删除用户 ID 或更新其评论,或者至少将另一个用户 ID 设为默认值。这是因为它包含的注释有一个愚蠢的排版错误。喜欢: gpg> list pub 4096R/xxxxxxxx created
我在使用 Python gnupg 模块验证签名时遇到问题。使用此模块,我可以加密和签署文件: gpg.encrypt_file(stream, encrypt_for, sign=sign_by,
我确实用 git 签署了提交,这是一个大问题,我无法从 CLI 以外的任何地方输入 gpg key 密码。例如,如果我将在 vscode 中提交,它将失败。所以我想出了一个想法,只需从 CLI 输入密
我是 PGP 新手,我正在尝试使用 GnuPG 通过 this tutorial 生成 PGP 私钥. 基本上,我在命令提示符下键入以下命令(在管理员模式下): gpg --gen-key 输入以下所
我有一个 Java 应用程序,它从远程计算机获取 GnuPG 加密文件,我需要解密和处理它们。然后我需要加密输出文件并将其发送到远程计算机。 首先我尝试了gnupg-for-java ( https:
尝试在 Python 中初始化 GnuPG 绑定(bind)时,我收到一条错误消息 TypeError: __init__() got an unexpected keyword argument '
如何通过 GPG(GnuPG) 中的子 key (多个子 key (e))加密 pub rsa4096/22E49AB870AD169A 2017-03-09 [SC] uid
我收到一个错误: gpg: no default secret key: No secret key gpg: [stdin]: clearsign failed: No secret key GPG
以下是我一直在尝试的代码。 import os import gnupg import pdb pdb.set_trace() gpg = gnupg.GPG(gnupghome='new') inp
我需要自动加密文件,例如myfile.xls 到 myfile.gpg。现在,当我尝试自动加密或使用 GNU 隐私助手对其进行加密时,加密的文件是 myfile.xls.gpg。当我删除该 .xls
我想对文件 /tmp/public.txt 进行对称加密. gpg --symmetric /tmp/public.txt 该命令将调用 enter passphrase窗口,我想自动发送密码。 我在
我正在尝试导入公钥、读取 csv 文件、加密该文件并将加密文件存储在文件夹/目录中。程序运行但在我运行脚本后似乎没有生成、创建或输出任何内容。任何建议。 import gnupg gpg = gnup
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 8年前关闭。 Improve this q
是否有一些 Gpg2 使用的库的依赖树或图,例如 libgpg-error 或 libassuan &c.? 或者另一种方法来确定在其中一个获得新版本后我需要重新编译哪些?例如。据我所知,libgpg
我正在使用 GNUPG 工具通过命令行执行加密/解密。在删除公钥时,我给出了以下命令: gpg2 --quite --yes --delete-key "Solveon DB" 命令执行后我得到了问题
我正在尝试对一些使用GPG(当前为1.4.10版)的自定义软件进行过时的验证,以执行对称加密/解密过程。我当前的加密命令如下所示: gpg --batch --no-tty --no-use-agen
我是一名优秀的程序员,十分优秀!