Я пытаюсь запрограммировать свою собственную реализацию RSA, но у меня возникают некоторые проблемы.
У меня есть закрытый и открытый ключи, которые содержат (n, e) и (n, d) соответственно,но я не уверен, как использовать их для шифрования.Я закодировал открытый текст, который хочу зашифровать в очень большое целое число - это так же просто, как увеличить это число на e в случае шифрования?Я сомневаюсь, потому что я нигде не использую, хотя я уверен, что мне нужно.
Вот мой код:
def encrypt(self, plaintext_file, encrypted_file):
with open(plaintext_file, 'rb') as fin:
plaintext_bin = fin.read()
plaintext = plaintext_bin.decode('utf-8')
with open("public.txt", "r") as fin:
lines = fin.readlines()
n, e = int(lines[0].strip()), int(lines[1].strip())
alphabet = ".,?! \t\n\rabcdefcdghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
encoded = self.to_base10(plaintext, alphabet)
encrypted = pow(encoded, e) # is this right?
Мне также любопытно, как я могу расшифровать, чтобы убедиться, что он работает.