Как преобразовать строку в PublicKey?

Есть текстовый файл, который надо зашифровать, и публичный ключ, который я ввожу с клавиатуры. При попытке зашифровать происходит ошибка:

[2022-06-04 21:17:12,648] ERROR in app: Exception on /results [POST]
Traceback (most recent call last):
  File "/home/mdddm/rsa_n_flask/.venv/lib/python3.10/site-packages/flask/app.py", line 2077, in wsgi_app
    response = self.full_dispatch_request()
  File "/home/mdddm/rsa_n_flask/.venv/lib/python3.10/site-packages/flask/app.py", line 1525, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/home/mdddm/rsa_n_flask/.venv/lib/python3.10/site-packages/flask/app.py", line 1523, in full_dispatch_request
    rv = self.dispatch_request()
  File "/home/mdddm/rsa_n_flask/.venv/lib/python3.10/site-packages/flask/app.py", line 1509, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**req.view_args)
  File "/home/mdddm/rsa_n_flask/app.py", line 23, in results
    result = encrypt(file, key)
  File "/home/mdddm/rsa_n_flask/.venv/lib/python3.10/site-packages/rsa/pkcs1.py", line 193, in encrypt
    keylength = common.byte_size(pub_key.n)
AttributeError: 'str' object has no attribute 'n'

(да, у меня тут ещё и flask, но он исправно работает) Мой код:

from rsa import decrypt, encrypt
from datetime import datetime as dt

c_time = str(dt.now()).replace(' ', '$')
key = input()
with open(f'{c_time}', 'rb') as stream:
    file = stream.read()
    if mode:
        result = encrypt(file, key)
    else:
        result = decrypt(file, key)
with open(f'_{c_time}', 'wb') as file:
    file.write(result)

Насколько я понял, ключом должна быть не строка, а объект PublicKey. Как сделать из строки PublicKey? Или так нельзя?


Ответы (0 шт):