Why RSA encryption can return different results with C# and Java?

Posted by ActioN on Stack Overflow See other posts from Stack Overflow or by ActioN
Published on 2010-04-02T18:14:05Z Indexed on 2010/04/02 18:33 UTC
Read the original article Hit count: 614

Filed under:
|
|

I using:

  • c#: RSACryptoServiceProvider
  • JAVA: KeyFactory.getInstance("RSA")+Cipher

I sending public key (exponent + modulus) as byte array from java to c#. It's ok, there is the same bytes. But when i try to encrypt some data with one key in Java and c# - there is different results.

Java Key Generation:

KeyPairGenerator keyGen = KeyPairGenerator.getInstance("RSA");
keyGen.initialize( Config.CRYPTO_KEY_NUM_BITS );

m_KeyPair = keyGen.genKeyPair();

m_PublicKey = KeyFactory.getInstance("RSA").generatePublic(
 newX509EncodedKeySpec(m_KeyPair.getPublic().getEncoded()));

byte[] exponent = m_PublicKey.getPublicExponent().toByteArray();
byte[] modulus  = m_PublicKey.getModulus().toByteArray(); // then sending...

C# Key Recieve:

// Recieved...
m_ExternKey = new RSAParameters();
m_ExternKey.Exponent    = exponent;
m_ExternKey.Modulus     = modulus;

m_RsaExtern = new RSACryptoServiceProvider();
m_RsaExtern.ImportParameters(m_ExternKey);

byte[] test = m_RsaExtern.Encrypt(bytesToEncrypt, true);

and problem is that encrypted bytes is different.

Thank you.

© Stack Overflow or respective owner

Related posts about java

Related posts about rsa