我的服务器创建一个RSACryptoServiceProvider并将其参数导出到一个变量(RSAKeyInfo)。
然后,将公钥发送到客户端,客户端使用该公钥对某些内容进行加密。
现在,我需要能够在将这些数据发送回服务器时对其进行解密-这就是为什么RSA在我的情况下很有用。
然而,当我尝试用从先前创建的第一个RSACryptoServiceProvider中导入的参数重新创建RSACryptoServiceProvider时,我得到了一个"Bad Data“异常。
..。代码可能会更清晰。
创建加密:
class Cryptograph
{
public Cryptograph()
{
this.RSAKeyInfo = new RSACryptoServiceProvider(2048, new CspParameters(1)).ExportParameters(true);
}
}稍后访问它以进行解密:
byte[] encrypted = ...;
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
rsa.ImportParameters(this.Cryptograph.RSAKeyInfo);
byte[] decrypted = rsa.Decrypt(encrypted, false);
Console.WriteLine(Utilities.ByteArrayToHexString(decrypted));我在下面这一行得到了"Bad Data“异常:
byte[] decrypted = rsa.Decrypt(encrypted, false);我做错了什么?我怎样才能正确地做这件事?谢谢您:)
附言:请不要发送MSDN或明显的谷歌结果链接,我已经阅读了所有这些页面,但仍然不能让它工作。
发布于 2009-09-08 22:07:13
我需要一个不使用填充的加密/解密,而C#.NET在默认情况下不提供它。OpenSSL.NET可以完成这项工作,然而,我在尝试使用它时被卡住了。(See this question if you want to help me make it work)。:(
发布于 2009-08-29 05:14:30
当使用公钥加密时,您需要使用私钥进行解密。我不明白您在哪里使用私钥进行解密。
我知道您已经阅读了这篇文章,但是您可能想要阅读加密页面和解密页面,并确保您遵循以下步骤:http://msdn.microsoft.com/en-us/library/te15te69.aspx
除非您在加密非常短的消息,例如密码,否则通常应该使用RSA加密来加密对称密钥,该密钥可以更快地加密/解密较长的消息。
您可以使用公钥加密的内容的大小与密钥的长度有关。
https://stackoverflow.com/questions/1350516
复制相似问题