Зашифровать Расшифровать файл с помощью GNUPG

Я создал ключи PGP, используя этот сайт-генератор ключей (Алгоритм — RSA, Размер ключа — 4096 бит). Я использую Databricks для написания функций шифрования и дешифрования и хранения открытых и закрытых ключей, сгенерированных через pgpkeygen.com. Я пробовал несколько способов достижения этой функциональности, но каждый раз терпел неудачу. Ниже приведен последний код, который у меня есть для шифрования и дешифрования:

Шифрование:

import gnupg
import os

gpg = gnupg.GPG(gnupghome = 'pgp_keys/')

def encrypt_file(file_path, output_path):
    with open(file_path, 'rb') as f:
        encrypted_data = gpg.encrypt_file(f, "[email protected]")
        with open(output_path, 'wb') as encrypted_file:
            encrypted_file.write(encrypted_data.data)
    
    print('ok: ', encrypted_data.ok)
    print('status: ', encrypted_data.status)
    print('stderr: ', encrypted_data.stderr)

Ниже приведены журналы, которые я собрал после выполнения функции шифрования:

ок: ложный статус: неверный получатель stderr: gpg: ПРЕДУПРЕЖДЕНИЕ: небезопасно разрешения для домашнего каталога '/Workspace/Users/[email protected]/pgp_keys' [GNUPG:] KEY_CONSIDERED 337B0001AEB11E875CBFE01C99E7824740791203 0 [GNUPG:] KEY_CONSIDERED 337B0001AEB11E875CBFE01C99E7824740791203 0 gpg: 01E18C0B5E758C10: нет никакой гарантии, что этот ключ принадлежит указанному пользователь [GNUPG:] INV_RECP 10 [email protected] [GNUPG:] ОШИБКА шифрования 53 gpg: [stdin]: шифрование не выполнено: непригодный открытый ключ

Ключи правильные и пригодные для использования. Загрузил их несколько раз после того, как увидел сообщение «Невозможно использовать открытый ключ».

Ниже приведен код расшифровки:

def decrypt_file(file_path, output_path):
    with open(file_path, 'rb') as f:
        decrypted_data = gpg.decrypt_file(f,passphrase='passphrase', output=output_path)
    return decrypted_data.ok

Я попробовал несколько способов исправить эти ошибки, но не смог выполнить правильное шифрование и дешифрование. Мне нужна помощь в правильном шифровании и дешифровании с использованием ключей PGP.

unsafe permissions on homedir означает, что права доступа к файлам вашего домашнего каталога слишком либеральны: другим пользователям разрешено читать некоторые из них (возможно, включая ваши личные ключи!), что GPG (справедливо) считает серьезной угрозой безопасности. Поэтому, чтобы заставить вас это исправить, он отказывается выполнять свою работу. Это один из примеров того, в чем может быть причина и решение.
Joachim Sauer 26.04.2024 09:52

Я добавил sudo gpgconf --kill dirmngr в сценарий инициализации кластера databricks и выполнил тот же код, получив ту же ошибку.

Ajay 26.04.2024 10:09

Похоже, вы не совсем дочитали ответ до конца...

Joachim Sauer 26.04.2024 10:11

Я прочитал это и попробовал несколько шагов. Инициализация кластера не удалась за несколько шагов. Можете ли вы помочь мне, какой оператор мне нужно добавить в сценарий инициализации кластера, чтобы изменить права доступа к папке?

Ajay 26.04.2024 10:19
gist.github.com/oseme-techguy/bae2e309c084d93b75a9b25f49718f‌​85
President James K. Polk 26.04.2024 22:18

Я добавил эти 3 команды в сценарий инициализации кластера Databrick, получив ошибку ниже. ок: ложный статус: ошибка - опция-постобработка 33554433 stderr: gpg: ПРЕДУПРЕЖДЕНИЕ: небезопасные разрешения в домашнем каталоге '/Workspace/Users/[email protected]/.gnupg' gpg: выбранный алгоритм шифрования недействителен [GNUPG:] Опция FAILURE - постобработка 33554433

Ajay 27.04.2024 17:23
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
6
259
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ниже приведена команда оболочки, которая поможет расшифровать файлы.

gpg --no-tty --batch --import /dbfs/mnt/datalake/configuration/config_decrypt/privatekey.asc  

mkdir -p /dbfs/mnt/datalake/<Output directory>  

gpg --no-tty --batch --yes --ignore-mdc-error --pinentry-mode=loopback --passphrase-fd 1 --passphrase-file /dbfs/mnt/datalake/configuration/config_decrypt/Passphrase.txt --output /dbfs/mnt/datalake/<Output directory>/${output_decrypted_filename} --decrypt /dbfs/mnt/datalake/<Input Directory>/${input_encrypted_filename}

обратитесь к этому для более подробной информации.

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