соответствующий запрос к тому, что является лучшим методом Python для шифрования - PullRequest
1 голос
/ 13 октября 2009

Я пытался использовать функцию дешифрования шифрования модуля gnupg.py с именем
"def test_encryption_and_decryption (self):"

Могу ли я использовать эту функцию, передавая ключ или отпечаток, полученный с сервера открытых ключей.

Я получаю ключ от этого:

retk = urllib.urlopen('http://pool.sks-keyservers.net:11371/pks/lookup
op=get&search=hex format of key')
pub_key = retk.read()

Я также пытался передать отпечаток в методе шифрования:

data = "Hello, world!"
edata = str(self.gpg.encrypt(data, fingerprint))
print edata

Не понимаю, как это сделать. Кто-нибудь мне поможет, предложив свое ценное и эффективное решение / предложения.

спасибо!

1 Ответ

3 голосов
/ 13 октября 2009

Прежде чем вы сможете зашифровать ключом, ключ которого у вас есть, вам необходимо импортировать ключ в набор ключей. Для этого используйте функцию import_keys.

Редактировать : шифрование невозможно даже после импорта ключа, поскольку GPG не доверяет ему. Это становится очевидным, когда вы включаете подробные сообщения; вы получите

gpg: <keyid>: There is no assurance this key belongs to the named user

Чтобы обойти эту проблему (не считая настройки пути доверия для ключа), вы можете изменить модель доверия gpg. Следующая программа работает для меня (с моим ключом в качестве примера)

import gnupg, urllib
retk = urllib.urlopen("http://keyserver.pramberger.at/pks/"
       "lookup?op=get&search=0x6AF053F07D9DC8D2")
pub_key = retk.read()

gpg = gnupg.GPG(gnupghome="/tmp/foo", verbose=True)
print "Import:", gpg.import_keys(pub_key).summary()
print "Encrypt:", gpg.encrypt("Hello, world!", "6AF053F07D9DC8D2", 
                  always_trust=True)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...