RSA допускает любой размер ключа, так как вычисления выполняются с использованием больших целых чисел без знака. Размер модуля в битах определяет размер ключа.
Однако многие реализации имеют ограничения. Многим библиотекам потребуется, по крайней мере, модуль, кратный 8 битам, но нередки и те, которые допускают только 32-битные приращения или даже только определенные размеры ключа. Если используются определенные размеры ключей, то это обычно степени двойки (как те, которые вы упомянули) или добавление двух последующих степеней двойки (например, 2048 + 1024 = 3072 бит).
Имеет смысл, что аппаратные реализации имеют максимальный размер ключа. Реализации также могут часто требовать минимального размера ключа - однако спорно, следует ли выполнять такую проверку на уровне реализации алгоритма; Я лично не за это.
Обычно в стандартах используются такие размеры ключей, но иногда используются и другие параметры, например. 1792 бита (1024 + 512 + 256 = 1792) или 1920 бит (1024 + 512 + 256 + 128) для операций со смарт-картами, где 2048-битный зашифрованный текст или подпись не помещаются в один (защищенный) блок данных прикладного протокола (APDU). Как видите, они будут стараться оставаться как можно ближе к кратным некоторой степени двойки.
Обратите внимание, что PKCS#1 был определен для кодирования как модуля, так и экспоненты, а также зашифрованного текста/подписи в виде байтов (или октетов). Тем не менее, определенные здесь режимы заполнения должны работать, даже если модуль не кратен 8.
Следует иметь в виду, что частный показатель степени — это в основном случайное значение между 0 и модулем. По всей вероятности, он близок к модулю по размеру, но может быть на один или несколько байтов меньше при кодировании до минимального количества байтов.