Во-первых: кто-то написал эту спецификацию.Посоветуйтесь с ними вместо того, чтобы спрашивать нас.У них есть основания для написания этого требования, и вам нужно знать, что это такое.Когда вы сталкиваетесь с неясным требованием, худшее, что вы можете сделать, - это начать гадать, особенно при работе с криптографией.
Второе: в своем тестовом коде вы шифруете модуль закрытого ключа.Модуль не является секретным в криптосистеме RSA, поэтому не нужно его шифровать.Вы не пытаетесь зашифровать частный показатель (который является фактической секретной частью).Частный показатель всегда меньше, чем модуль, поэтому вы должны иметь возможность зашифровать его с помощью необработанной операции RSA (если вы обязательно удалите предваряющий ноль).Это должно быть безопасно (перевод: я не вижу каких-либо явных атак с учетом этого в течение 30 секунд) - если оно нестандартное.
РЕДАКТИРОВАТЬ: Как указывает Грегс в комментарияхвы не можете быть уверены, что частный показатель ключа, который вы хотите зашифровать, меньше, чем модуль ключа, который вы хотите использовать для шифрования.Я думаю, что примерно в 25% случаев это будет , а не .Поэтому вместо этого используйте метод, приведенный ниже.
Еще лучший способ сделать это (который является полностью стандартным и, как я подозреваю, является тем, что на самом деле авторы спецификаций намереваются), - это зашифровать закрытый ключ с использованием обычного гибридного подхода.: Сгенерируйте симметричный ключ, используйте его для шифрования закрытого ключа (здесь вы можете использовать стандартный сериализованный формат, не беспокоясь о длине), зашифруйте симметричный ключ другим открытым ключом (используя RSA / PKCS # 1) и передайтедва шифрования для получателя, который выполняет противоположные шаги.