Расшифровка Python GnuPG успешно работает в Windows, но не работает в Linux

Я использую пакет python-gnupg для расшифровки файла с помощью сгенерированного ключа. По причинам, которые я не могу объяснить, этот код работает в Windows и успешно расшифровывает файл:

      import gnupg
import os
key_data = '''-----BEGIN PGP PRIVATE KEY BLOCK-----

<key data here>
-----END PGP PRIVATE KEY BLOCK-----
'''
gpg_path = "C:/Program Files (x86)/GnuPG/bin/gpg.exe":
gpg = gnupg.GPG(gpg_path)
gpg.encoding = 'utf-8'
import_result = gpg.import_keys(key_data)
with open(r"C:\Users\test\Downloads\my.csv.gpg", "rb") as f:
  status = gpg.decrypt_file(f, passphrase=None, output=r"C:\Users\test\Downloads\TEST.CSV")
  print("STATUS OK ? " + str(status.ok))
  print("STDERR: " + str(status.stderr))

Я вижу, что напечатано «СТАТУС ОК? Верно».

Однако этот код не может быть расшифрован в докеризованной среде Linux на том же ПК:

      import gnupg
import os
key_data = '''-----BEGIN PGP PRIVATE KEY BLOCK-----

<key data here>
-----END PGP PRIVATE KEY BLOCK-----
'''
gpg_path = "/usr/bin/gpg":
gpg = gnupg.GPG(gpg_path)
gpg.encoding = 'utf-8'
import_result = gpg.import_keys(key_data)
with open(r"/home/test/my.csv.gpg", "rb") as f:
  status = gpg.decrypt_file(f, passphrase=None, output=r"/home/test/TEST.CSV")
  print("STATUS OK ? " + str(status.ok))
  print("STDERR: " + str(status.stderr))

Я вижу напечатанное «СОСТОЯНИЕ ОК? Ложь» и никаких других ошибок. Выходной файл не создается. В обеих средах работает Python 3.7.9, и запуск pip show python-gnupg дает одинаковый результат в обеих средах. Я обязательно скопировал зашифрованный файл и попытался сохранить его с различными кодировками. Среда Linux — Debian через WSL.

0 ответов

Другие вопросы по тегам