【发布时间】:2010-04-02 18:14:05
【问题描述】:
我使用:
- c#: RSACryptoServiceProvider
- JAVA:KeyFactory.getInstance("RSA")+Cipher
我将公钥(指数 + 模数)作为字节数组从 java 发送到 c#。没关系,有相同的字节。但是当我尝试用 Java 和 c# 中的一个密钥加密一些数据时 - 会有不同的结果。
Java 密钥生成:
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# 密钥接收:
// 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);
问题是加密字节不同。
谢谢。
【问题讨论】: