如何进行等效加密? (java,C#)

时间:2017-01-23 17:30:53

标签: java c# encryption

这个看似简单且标准的Java RSA加密代码的C#版本没有产生相同的结果。救命?

注意:java代码使用DER文件,因此我们必须先将其转换为PEM格式(通过openssl)

  • openssl rsa -inform DER -outform PEM -in FOO.der -out FOO.pem

然后再到XML(通过BouncyCastle)。具体做法是:

  • using(var reader = new StreamReader(PrivateKeyPemFile)){text = reader.ReadToEnd(); } string xmlpem = RsaKeyConverter.PemToXml(text);

我们在这里做错了什么? (这是我们的关键转换吗?或者是否有一个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);

0 个答案:

没有答案