Я искал в интернете онлайн-калькулятор RSA, а также пример алгоритма RSA, и нашел этот инструмент онлайн-калькулятора RSA и этот сайт, на котором упомянут алгоритм, как показано ниже:
Пример алгоритма RSA
Выберите p = 3 и q = 11. Вычислить n = p * q = 3 * 11 = 33. Вычислить φ (n) = (p - 1) * (q - 1) = 2 * 10 = 20. Выберите e так, чтобы 1 <e <φ (n) и e и n взаимно просты.
Пусть e = 7. Вычислите значение для d так, чтобы (d * e)% φ (n) = 1. Одним из решений является d = 3 [(3 * 7)% 20 = 1]
Открытый ключ (e, n) => (7, 33)
Закрытый ключ (d, n) => (3, 33)
Шифрование m = 2 - это c = 2 ^ 7% 33 = 29
Расшифровка с = 29 составляет м = 29 ^ 3% 33 = 2
Поскольку я хочу протестировать другой пример самостоятельно, я выбрал другую пару для p и q, и я сделал вышеупомянутые шаги:
p=4259 and q=6053 ==> n=p*q=25779727
φ(n)=(p-1)*(q-1)=25769416
And as GCD(23421481,25779727)=1, I select e=23421481
Now if I want to encrypt '1', its encryption is (1^23421481)%25779727
Очевидно, что (1^23421481)%25779727=1
Но когда я использую инструмент онлайн-калькулятора, это вывод:
Как видите, он возвращает 10098474
в качестве значения шифрования 1
!
Q1: почему? Что не так с шагами, которые я сделал вручную, чтобы вычислить значение шифрования?
Q2: Как этот сайт рассчитывает это выражение для другого числа (кроме 1)? Я думаю, что 2^23421481
- это действительно большое число для такого онлайн-инструмента, который можно рассчитать за доли секунды !! (Я пытался вычислить 2 ^ 23421481, используя wolfram-alpha. Даже этот большой сайт возвращает время!):D