Использование pynacl для шифрования одним файлом и дешифрования вторым файлом - PullRequest
1 голос
/ 11 мая 2019

У меня есть код, который я написал ниже для Python 2.7 и использующий pynacl, работающий на Mac OS X.В настоящее время он работает, как написано ниже, и зашифрует пароль, а затем расшифрует его позже.Я хочу знать, есть ли где-нибудь, где последние несколько строк, которые расшифровываются, могут быть в отдельном файле Python?Отдельный файл python - это cronjob, который запускается ежедневно и для его запуска потребуется пароль, поэтому я нуждаюсь в том, чтобы часть расшифровки была в файле №2.Пожалуйста, дайте мне знать о любых предложениях.

Я попытался импортировать файл № 1 в файл № 2, а также даже сохранить необходимые переменные из файла № 1 в файлы, но «SealedBox» не может быть сохранен в файлс ошибкой «Ошибка типа: аргумент 1 должен быть преобразован в буфер, а не в SealedBox»

#!/usr/bin/env python2


import nacl.utils
from nacl.public import PrivateKey, SealedBox
import getpass

# Generate Bob's private key, as we've done in the Box example
skbob = PrivateKey.generate()
pkbob = skbob.public_key

# Alice wishes to send a encrypted message to Bob,
# but prefers the message to be untraceable
sealed_box = SealedBox(pkbob)

# This is Alice's message
message = getpass.getpass("LDAP Password is:")

# Encrypt the message, it will carry the ephemeral key public part
# to let Bob decrypt it
encrypted = sealed_box.encrypt(message)

# Store the data with binary mode:
# with open('file.bin', 'wb') as f:
#   f.write(encrypted)

unseal_box = SealedBox(skbob)

# with open('file2.bin', 'wb') as f:
#   f.write(unseal_box)

# decrypt the received message, this is where File #2 would start
plaintext = unseal_box.decrypt(encrypted)
print(plaintext.decode('utf-8'))

1 Ответ

0 голосов

Вы можете использовать pickle:

скрипт шифрования

from nacl.public import PrivateKey, SealedBox
import getpass
import pickle

# Generate Bob's private key, as we've done in the Box example
skbob = PrivateKey.generate()
pkbob = skbob.public_key

# Alice wishes to send a encrypted message to Bob,
# but prefers the message to be untraceable
sealed_box = SealedBox(pkbob)

# This is Alice's message
message = getpass.getpass("LDAP Password is:")

# Encrypt the message, it will carry the ephemeral key public part
# to let Bob decrypt it
encrypted = sealed_box.encrypt(message.encode())

# Store the data with binary mode:
with open('file.bin', 'wb') as f:
    pickle.dump(encrypted, f)
with open('file2.bin', 'wb') as f:
    pickle.dump(skbob, f)

скрипт дешифрования

from nacl.public import SealedBox
import pickle

with open('file.bin', 'rb') as f:
    encrypted = pickle.load(f)
with open('file2.bin', 'rb') as f:
    skbob = pickle.load(f)

unseal_box = SealedBox(skbob)
# decrypt the received message, this is where File #2 would start
plaintext = unseal_box.decrypt(encrypted)
print(plaintext.decode('utf-8'))
...