We have generated RSA public key by our java program to encrypt the data in C+开发者_如何学Python+ 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?
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.
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#?
精彩评论