У меня есть процесс, который создает симметрично зашифрованный файл с 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 кажется наиболее близким, но они не используют симметричное шифрование и поэтому сталкиваются с проблемами с сертификатами пользователей и ключами. Как я уже сказал, я могу расшифровать файл с любым пользователем, если у меня есть пароль, поэтому я не думаю , это моя проблема.
Я даже не близок к тому, чтобы быть экспертом по шифрованию файлов, и я уверен, что делаю какое-то неправильное предположение.
Ура!