Gpg.import_keys () не работает в виртуальной среде PythonPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Gpg.import_keys () не работает в виртуальной среде Python

Сообщение Anonymous »

Я запускаю этот кусок кода, чтобы зашифровать файл с помощью PGP Public Key. < /p>

Код: Выделить всё

import gnupg

def pgp_encrypt(pub_file, out_file):

gpg = gnupg.GPG()

with open(pub_file, 'rb') as pgp_pub_key:
public_key_data = pgp_pub_key.read()

# import_keys_file() is NOT used as the key
# eventually will come from user-input
import_result = gpg.import_keys(public_key_data)
if import_result.count == 0:
print("Error: No keys imported. Make sure the public key file is correct.")
exit()

pgp_key_id = import_result.results[0]['fingerprint']
plaintext_data = b'This is the TEST data to encrypt'

encrypted_data = gpg.encrypt(
plaintext_data,
recipients=[pgp_key_id],
always_trust=True
)

if encrypted_data.ok:
print("Data encrypted successfully.")
print(encrypted_data.data)
with open(out_file, 'wb') as encrypted_file:
encrypted_file.write(encrypted_data.data)
else:
print("Encryption failed:")
print(encrypted_data.status)

## Apply
pgp_encrypt('pgp_pubkey.asc', 'pgp_encrypted_file')
Итак, в основном он читает файл с общедоступным ключом и размещает данные в public_key_data , а затем импортирует его с помощью gpg.import_keys (public_key_data) перед шифрованием файла.

Код: Выделить всё

print(encrypted_data.data)
в моем коде не печатает результат должным образом (на экране, что является еще одной проблемой для решения), но он работает:

Код: Выделить всё

santanu@mgtucrpi5:~/Scripts/gnupg $ python pgp_encrypt.py
Data encrypted successfully.
b'-----BEGIN PGP MESSAGE-----\n\nhQIMA4QM8WwBjfPfAQ/+Jel/JySvuydbuAHDuRT/KwOoFOStYUprQ3TQsj3S3ryJ\nC6bqYD77XviU3fjtcedKxCc0F9Gxw01fb838H0AeACI9Bi4GLuUgS/FJTvrEsX4K\nMniWu4HsConIX+63Ud+RHlVCRziGsa86Uub7GwsaOvYpYhovWzNxc/ObLmoMZaSP\nYmBUHkN+rGGOx4CGGiVS7480Mp2gmd3UyFFbQwV1xO+fz5I+gOcYJSXU0R6SzdXd\nS03sI+8AXLVLmgTARi5ed5V4gr4EIb/bhN18zyUo6gO8vo34GtllFQlRZWL04GRN\n/wg0uudJd26tRxJfCwdcYONKzbNFo8wtLv7dedY+cah+2bTHKFcTWYMGyrhCZZmG\nnZ/GWXnojAz9n9BUNLT/vwQvildfSsuG2qABmk5HUjv0bOH8Ducw6UrbO1pP6hzO\nQcMxGEg8/YQCfI7Zcz1RrIRHWBDlhmG2znDFin2ApyY0N1FmagOJYSZ/ijUkBnT3\nbtIRJ0ISGR7Hjee2G80vKvy0Ozkev2dAhl4Rm3BzoLQV340jEe6dmg8QUPbP0hGU\ni+mlGNMpg50TQVE90ILewhndaBGcBxltS2hVwe+AWj0vhYK3EUqE32Hj7mZxXAWc\nfLTAIXCbsSrZ0Mtc+m6V1IkkwotHaNOea6gqoLMixHbYiwq+F5beu2taYOsespHS\nUQE28ZFF/n6HQ0EUfDuKsd14xUE6UjZvWpfaOor1OedKCife/HkrOOR/VCua1p/T\npROcEBIU2jtazibCiYD1uIy+lwS4w0en8ysFPrLnJuWcFQ==\n=UR1e\n-----END PGP MESSAGE-----\n'
< /code>
Но в тот момент, когда я запускаю его из виртуальной среды, я получаю следующую ошибку: < /p>
santanu@mgtucrpi5:~/Scripts/gnupg $ source pgpenv/bin/activate
(pgpenv) santanu@mgtucrpi5:~/Scripts/gnupg $ python pgp_encrypt.py
Traceback (most recent call last):
File "/home/santanu/Scripts/gnupg/pgp_encrypt.py", line 34, in 
pgp_encrypt('pgp_pubkey.asc', 'pgp_encrypted_file')
File "/home/santanu/Scripts/gnupg/pgp_encrypt.py", line 11, in pgp_encrypt
if import_result.count == 0:
^^^^^^^^^^^^^^^^^^^
AttributeError: 'ImportResult' object has no attribute 'count'. Did you mean: 'counts'?
Если я изменю его на счет (просто для того, чтобы попробовать), я получаю Diffred Error, которая также выглядит не правильно:
File "/home/santanu/Scripts/gnupg/pgpenv/lib/python3.11/site-packages/gnupg/gnupg.py", line 1064, in encrypt
result = self._encrypt(stream, recipients, **kwargs)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
TypeError: GPGBase._encrypt() got multiple values for argument 'recipients'
< /code>
Как это исправить?

ref. https://gnupg.readthedocs.io/en/latest/ ... iving-keys

Подробнее здесь: https://stackoverflow.com/questions/794 ... nvironment
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»