Nisha
Nisha

Reputation: 11

Encryption key generated by java program is not accepted by Microsoft encryption API

We have generated RSA public key by our java program to encrypt the data in C++ before transmitting it but when we use this key to encrypt the data using Microsoft encryption API, it doesn't accepts this key.

Do anyone has any ideas on this?

Upvotes: 0

Views: 321

Answers (2)

James Black
James Black

Reputation: 41858

In my experience the serialization of an RSA key is different between Java and MS.

But, what I did was to use the Bouncy Castle API to do this, as they have a Java and .NET version of their library.

For more options you can look at this question: RSA: How to generate private key in java and use it in C#?

Upvotes: 0

Thomas Pornin
Thomas Pornin

Reputation: 74382

Microsoft code has some intrinsic limitations on what RSA keys it can use: it requires the public key length (the modulus bit length) to be a multiple of 16, and the public exponent must fit in a 32-bit unsigned integer.

However, most RSA keys fit in those constraints and the usual suspects are encoding/decoding issues. Java tends to use big-endian everywhere, because:

  • that's what is mandated by ASN.1-based encoding rules;
  • Java is from Sun who hast long dealt with big-endian hardware (68020, Sparc).

On the other hand, Microsoft's CryptoAPI wants little-endian. You may have used your public modulus in the wrong order.

Upvotes: 1

Related Questions