Я создал ключи 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.
Я добавил sudo gpgconf --kill dirmngr в сценарий инициализации кластера databricks и выполнил тот же код, получив ту же ошибку.
Похоже, вы не совсем дочитали ответ до конца...
Я прочитал это и попробовал несколько шагов. Инициализация кластера не удалась за несколько шагов. Можете ли вы помочь мне, какой оператор мне нужно добавить в сценарий инициализации кластера, чтобы изменить права доступа к папке?
Я добавил эти 3 команды в сценарий инициализации кластера Databrick, получив ошибку ниже. ок: ложный статус: ошибка - опция-постобработка 33554433 stderr: gpg: ПРЕДУПРЕЖДЕНИЕ: небезопасные разрешения в домашнем каталоге '/Workspace/Users/[email protected]/.gnupg' gpg: выбранный алгоритм шифрования недействителен [GNUPG:] Опция FAILURE - постобработка 33554433
Ниже приведена команда оболочки, которая поможет расшифровать файлы.
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}
обратитесь к этому для более подробной информации.
unsafe permissions on homedir
означает, что права доступа к файлам вашего домашнего каталога слишком либеральны: другим пользователям разрешено читать некоторые из них (возможно, включая ваши личные ключи!), что GPG (справедливо) считает серьезной угрозой безопасности. Поэтому, чтобы заставить вас это исправить, он отказывается выполнять свою работу. Это один из примеров того, в чем может быть причина и решение.