Нет структурных различий между парой ключей RSA, используемой для подписи, и парой, используемой для расшифровки шифрования. Теоретически вы можете использовать одну пару для обоих, но это открывает новые возможности для атак, поэтому это не рекомендуется.
С другой стороны, существуют различия между частными и публичными показателями:
Публичный показатель может быть относительно небольшим, что сокращает размер ключа и ускоряет шифрование и проверку подписи.
Как сказал Чарли Мартин, 0x10001 = 2 ^ 16 + 1 = 65537 - это обычный выбор.
Частный показатель, с другой стороны, получается из открытого ключа и факторизации модуля, и обычно в порядке размеров самого модуля. Поскольку он должен оставаться приватным, он не может быть маленьким (иначе легко догадаться), и ему также необходимо выполнить арифметическое отношение к общему показателю, что делает его автоматически большим.
Это делает наивное подписывание / дешифрование медленнее, чем соответствующие публичные операции, но с другой стороны,
можно немного ускорить это, используя разложение модуля и
Китайская теорема об остатках, то есть вычисление по модулю p
и q
отдельно вместо модуля m = p·q
и
затем объединяем результаты.
Обратите внимание, что мы различаем открытые (шифрование / проверка) и частные (расшифровка / подпись) показатели,
не между подписью / проверкой и показателями шифрования / дешифрования.