【问题标题】:Encrypted in Java using RSA/ECB/PKCS1Padding unable to decrypt in .Net使用 RSA/ECB/PKCS1Padding 在 Java 中加密无法在 .Net 中解密
【发布时间】:2011-12-19 18:59:45
【问题描述】:

我有一个使用 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 填充时出错”

我做错了什么?

【问题讨论】:

  • 你在哪一行得到了异常?

标签: c# java cryptography rsa x509


【解决方案1】:

调用Decrypt,将第二个参数设置为falseMSDN

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

【讨论】:

  • 我想通了,但是,我会给你功劳。感谢您的宝贵时间。
【解决方案2】:

这是工作代码。

 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));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 2013-03-12
    • 1970-01-01
    • 2021-09-16
    相关资源
    最近更新 更多