Некоторая информация о том, что вы сказали:
Я создал пару файлов * .pub и * .sec, используя инструкции
Идеально подходит для обмена открытым ключомс людьми, с которыми вы обмениваетесь информацией, но технически, когда вы работаете программно, вам не нужно использовать эти файлы напрямую.
Следует отметить:
- привы шифруете данные, вы указываете получателя, соответствующий ключу, который будет использоваться для шифрования
- , когда вы расшифровываете данные, вы сначала импортируете открытый ключ владельца, а затем сможете расшифровать данные без указания получателя,потому что он встроен в зашифрованные данные
На самом деле, я несколько запутался в этом вопросе.Я прочитал противоречивую информацию [...]
Я согласен, что это довольно запутанно.В этой ситуации я думаю, что лучше использовать версию 1, для которой больше опыта, и для которой вы найдете стороннюю библиотеку для использования.
В этом ответе я попытался:
- python-gnupg (для GnuPG v1) - это хорошо известная библиотека Python, которая идеально соответствует вашим потребностям
- cryptorito (для GnuPG v2), для которого я не нашел достаточно документации
С первой библиотекой вы можете просто установить ее в своей системе:
sudo pip install python-gnupg
А затем напишите сценарий Python для выполнения всех необходимых операций.
Я написал простой ответ на ваш вопрос.
#!/bin/python
import gnupg
GPG_DIR='/home/bsquare/.gnupg'
FILE_TO_ENCRYPT='/tmp/myFileToEncrypt'
ENCRYPTED_FILE='/tmp/encryptedFile'
DECRYPTED_FILE='/tmp/decryptedFile'
SENDER_USER='Bsquare'
TARGET_USER='Kjo'
gpg = gnupg.GPG(gnupghome=GPG_DIR)
print("Listing keys ...")
print(gpg.list_keys())
# On SENDER_USER side ... encrypt the file for TARGET_USER, with his public key (would match the kjo.pub if the key was exported).
print("Encrypting file " + FILE_TO_ENCRYPT + " for " + TARGET_USER + " ...")
with open(FILE_TO_ENCRYPT, "rb") as sourceFile:
encrypted_ascii_data = gpg.encrypt_file(sourceFile, TARGET_USER)
# print(encrypted_ascii_data)
with open(ENCRYPTED_FILE, "w+") as targetFile:
print("encrypted_ascii_data", targetFile)
# On TARGET_USER side ... decrypt the file with his private key (would match the kjo.sec if the key was exported).
print("Decrypting file " + ENCRYPTED_FILE + " for " + TARGET_USER + " ...")
with open(ENCRYPTED_FILE, "rb") as sourceFile:
decrypted_ascii_data = gpg.decrypt_file(sourceFile)
# print(decrypted_ascii_data)
with open(DECRYPTED_FILE, "w+") as targetFile:
print(decrypted_ascii_data, targetFile)
Следует отметить, что моя связка ключей содержит пару pub / sec длямой Bsquare
пользователь и ключ публикации Kjo
пользователя.