Шифрование с помощью RSA - PullRequest
       43

Шифрование с помощью RSA

0 голосов
/ 07 декабря 2018

Я пытаюсь запрограммировать свою собственную реализацию 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?

Мне также любопытно, как я могу расшифровать, чтобы убедиться, что он работает.

1 Ответ

0 голосов
/ 07 декабря 2018

Википедия Страница для RSA включает точный алгоритм шифрования.

c = m^e mod n

Вам необходимо добавить n в конец вашего pow Позвоните:

encrypted = pow(encoded, e, n)

Затем вы можете расшифровать:

plaintext = pow(encrypted, d, n)
...