我有一个字符串,它使用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填充时出错”
我做错了什么?
答案 0 :(得分:0)
使用第二个参数设置为Decrypt
来调用false
。
MSDN
... 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));