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

发布于 2024-12-22 05:49:28 字数 606 浏览 1 评论 0原文

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

我做错了什么?

I have a string that's encrypted using some crypto classes in Java (RSA/ECB/PKCS1Padding) and a public key we exchanged in advance.

I want to decrypt that string using our private key and this is the code I have.

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

I get an exception with error message.

"System.Security.Cryptography.CryptographicException: Error occurred while decoding OAEP padding"

What is that I'm doing wrong?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

音栖息无 2024-12-29 05:49:28

调用 Decrypt 并将第二个参数设置为 false
MSDN

...如果使用 PKCS#1 v1.5 填充则为 false。

Call Decrypt with the second parameter set to false.
MSDN

...false to use PKCS#1 v1.5 padding.

很酷又爱笑 2024-12-29 05:49:28

这是工作代码。

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

This is the working code.

 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));
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文