使用RSA / ECB / PKCS1Padding在Java中加密无法在.Net中解密

时间:2011-12-19 18:59:46

标签: c# java cryptography rsa x509

我有一个字符串,它使用Java中的一些加密类(RSA / ECB / PKCS1Padding)和我们提前交换的公钥加密。

我想使用我们的私钥解密该字符串,这是我的代码。

 X509Certificate2 cert = new X509Certificate2("c:\\test.pfx", "test");
        string s =               "very long encrypted data";

        RSACryptoServiceProvider privateKeyProvider = (RSACryptoServiceProvider)cert.PrivateKey;

        string decryptedTest = System.Text.Encoding.UTF8.GetString(privateKeyProvider.Decrypt(Convert.FromBase64String(s), true));

我收到错误消息的异常。

“System.Security.Cryptography.CryptographicException:解码OAEP填充时出错”

我做错了什么?

2 个答案:

答案 0 :(得分:0)

使用第二个参数设置为Decrypt来调用falseMSDN

  

... false使用PKCS#1 v1.5填充。

答案 1 :(得分:0)

这是工作代码。

 X509Certificate2 cert = new X509Certificate2("c:\\test.pfx", "test");
    string s =               "very long encrypted data";

    RSACryptoServiceProvider privateKeyProvider = (RSACryptoServiceProvider)cert.PrivateKey;

    string decryptedTest = System.Text.Encoding.UTF8.GetString(privateKeyProvider.Decrypt(Convert.FromBase64String(s), true));