首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在C#.NET中适当地解密RSA数据?

如何在C#.NET中适当地解密RSA数据?
EN

Stack Overflow用户
提问于 2009-08-29 05:04:09
回答 2查看 9K关注 0票数 2

我的服务器创建一个RSACryptoServiceProvider并将其参数导出到一个变量(RSAKeyInfo)。

然后,将公钥发送到客户端,客户端使用该公钥对某些内容进行加密。

现在,我需要能够在将这些数据发送回服务器时对其进行解密-这就是为什么RSA在我的情况下很有用。

然而,当我尝试用从先前创建的第一个RSACryptoServiceProvider中导入的参数重新创建RSACryptoServiceProvider时,我得到了一个"Bad Data“异常。

..。代码可能会更清晰。

创建加密:

代码语言:javascript
运行
复制
class Cryptograph
{
    public Cryptograph()
    {
        this.RSAKeyInfo = new RSACryptoServiceProvider(2048, new CspParameters(1)).ExportParameters(true);
    }
}

稍后访问它以进行解密:

代码语言:javascript
运行
复制
byte[] encrypted = ...;

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(this.Cryptograph.RSAKeyInfo);

byte[] decrypted = rsa.Decrypt(encrypted, false);
Console.WriteLine(Utilities.ByteArrayToHexString(decrypted));

我在下面这一行得到了"Bad Data“异常:

代码语言:javascript
运行
复制
byte[] decrypted = rsa.Decrypt(encrypted, false);

我做错了什么?我怎样才能正确地做这件事?谢谢您:)

附言:请不要发送MSDN或明显的谷歌结果链接,我已经阅读了所有这些页面,但仍然不能让它工作。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-08 22:07:13

我需要一个不使用填充的加密/解密,而C#.NET在默认情况下不提供它。OpenSSL.NET可以完成这项工作,然而,我在尝试使用它时被卡住了。(See this question if you want to help me make it work)。:(

票数 0
EN

Stack Overflow用户

发布于 2009-08-29 05:14:30

当使用公钥加密时,您需要使用私钥进行解密。我不明白您在哪里使用私钥进行解密。

我知道您已经阅读了这篇文章,但是您可能想要阅读加密页面和解密页面,并确保您遵循以下步骤:http://msdn.microsoft.com/en-us/library/te15te69.aspx

除非您在加密非常短的消息,例如密码,否则通常应该使用RSA加密来加密对称密钥,该密钥可以更快地加密/解密较长的消息。

您可以使用公钥加密的内容的大小与密钥的长度有关。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1350516

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档