Ключ шифрования, сгенерированный Java-программой, не принимается API шифрования Microsoft - PullRequest
0 голосов
/ 27 января 2010

Мы сгенерировали открытый ключ RSA с помощью нашей java-программы для шифрования данных в C ++ перед их передачей, но когда мы используем этот ключ для шифрования данных с помощью API шифрования Microsoft, он не принимает этот ключ.

У кого-нибудь есть идеи по этому поводу?

Ответы [ 2 ]

1 голос
/ 27 января 2010

Код Microsoft имеет некоторые внутренние ограничения на то, какие ключи RSA он может использовать: он требует, чтобы длина открытого ключа (длина модуля в битах) была кратна 16, а открытый показатель должен соответствовать 32-разрядному целому числу без знака.

Однако большинство ключей RSA соответствуют этим ограничениям, и обычные подозреваемые проблемы кодирования / декодирования. Java имеет тенденцию использовать big-endian везде, потому что:

  • это то, что предписано правилами кодирования на основе ASN.1;
  • Java от Sun, которая давно занимается оборудованием с прямым порядком байтов (68020, Sparc).

С другой стороны, Microsoft CryptoAPI хочет иметь младший порядок. Возможно, вы использовали свой публичный модуль в неправильном порядке.

0 голосов
/ 02 августа 2010

По моему опыту, сериализация ключа RSA различна для Java и MS.

Но я использовал для этого API-интерфейс Bouncy Castle, поскольку у них есть версии на Java и .NET.их библиотеки.

Дополнительные параметры вы можете посмотреть на этот вопрос: RSA: Как сгенерировать закрытый ключ в Java и использовать его в C #?

...