这个看似简单且标准的Java RSA加密代码的C#版本没有产生相同的结果。救命?
注意:java代码使用DER文件,因此我们必须先将其转换为PEM格式(通过openssl)
然后再到XML(通过BouncyCastle)。具体做法是:
我们在这里做错了什么? (这是我们的关键转换吗?或者是否有一个CspParameter设置会神奇地使这个等效?或者......)
JAVA代码
KeyFactory keyFactory = KeyFactory.getInstance("RSA");
KeySpec keySpec = new PKCS8EncodedKeySpec(keyRawBytes);
java.security.Key key = keyFactory.generatePrivate(keySpec);
javax.crypto.Cipher cipher = javax.crypto.Cipher.getInstance("RSA");
cipher.init(1, key);
encryptedBytes = cipher.doFinal(data);
C#代码
RSACryptoServiceProvider cryptoServiceProvider = new RSACryptoServiceProvider();
cryptoServiceProvider.FromXmlString(pemXmlString);
var encryptedBytes = rsa.Encrypt(data, false);