Задать вопрос
@Someone0110

Как написать дешифратор RSA?

Здравствуйте, хотел попробовать написать функцию, которая шифрует файл.... Но не без ошибок:( Имеется файл main.py, в нём записано следующие:
import rsa
( public, private ) = rsa.newkeys(512)
name = input("Enter filename: ")

file = open(name, "rb")
r = file.read() #считываю данные,что бы зашифровать
file.close()

crypt = rsa.encrypt(r, public )

file = open(name, "wb")
file.write(crypt)
file.close()

file = open("public.txt", "w")
file.write(str(public))
file.close()

file = open("private.txt", "w")
file.write(str(private))
file.close()

Файл успешно зашифровался, а как написать дешифратор ? Учитывая что ключи сохранены по отдельным файлам.
Пробовал написать сам, вот сам код:
Файл дешифратора назвал decrypt.py
import rsa

name = input("Enter filename: ")
key = input("Enter key: ")

file = open(name, "rb")
r = file.read()
file.close()

file2 = open(key, "rb")
r2 = file2.read()
file2.close()

msg = rsa.decypt(r, r2)

file3 = open(name, "w")
file3.write(str(msg))
file3.close()

Но выходит такая ошибка:
Enter filename: text.txt
Enter key: private.txt
Trace back ( most recent call last ):
    File "C:\Users\root\Desktop\Main\Python\decrypt.py", 
       line 14, in <module>
    msg = rsa.decrypt(r, r2 )
    File "C:\Users\root\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rsa\pkcs1.py", line 247, in decrypt
    block size = common.byte_size(priv_key.n)
AttributeError: 'str' object has no attribute 'n'
  • Вопрос задан
  • 309 просмотров
Подписаться 1 Средний Комментировать
Пригласить эксперта
Ответы на вопрос 1
samodum
@samodum
Какой вопрос - такой и ответ
msg = rsa.decrypt(r, r2 )
File "C:\Users\root\AppData\Local\Programs\Python\Python37-32\lib\site-packages\rsa\pkcs1.py", line 247, in decrypt
block size = common.byte_size(priv_key.n)
AttributeError: 'str' object has no attribute 'n'

Эта ошибка говорит о том, что неверный формат файла с приватным ключом. Ожидается формат по стандарту PKCS (какой-нибудь PEM), чтобы можно было получить поле "n". Но поскольку это другой формат, то этого поля не находит.
Надо конвертировать файлы ключей в другой формат, либо писать другой дешифратор
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы