Код Microsoft имеет некоторые внутренние ограничения на то, какие ключи RSA он может использовать: он требует, чтобы длина открытого ключа (длина модуля в битах) была кратна 16, а открытый показатель должен соответствовать 32-разрядному целому числу без знака.
Однако большинство ключей RSA соответствуют этим ограничениям, и обычные подозреваемые проблемы кодирования / декодирования. Java имеет тенденцию использовать big-endian везде, потому что:
- это то, что предписано правилами кодирования на основе ASN.1;
- Java от Sun, которая давно занимается оборудованием с прямым порядком байтов (68020, Sparc).
С другой стороны, Microsoft CryptoAPI хочет иметь младший порядок. Возможно, вы использовали свой публичный модуль в неправильном порядке.