Как преобразовать строку в 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? Или так нельзя?