Для проекта класса я создаю ручную реализацию шифрования RSA. Он не предназначен для криптографической защиты, он предназначен только для подтверждения понимания.
Я создал программу, которая может генерировать допустимые пары ключей, но я заметил, что различные вычисления для данного пациента приводят к правильным ответам для различных онлайн-примеров.
Например, p и q являются простыми числами, при этом вычисляется число:
lcm((p - 1), (q - 1))
дает правильный закрытый ключ для в этом примере и «Очень простой пример шифрования RSA» , но неверные закрытые ключи для «Несколько менее простой пример алгоритма RSA» и пример в этом видео .
При вычислении показателя как:
((p - 1) * (q - 1))
создает правильные и неправильные закрытые ключи в противоположных примерах.
Почему это так и как я могу вычислить значение и закрытый ключ, чтобы созданный закрытый ключ всегда был верным?
Моя программа.