C# Internal.Cryptography.CryptoThrowHelper.WindowsCryptography在C中解密RSA时出现异常#
我正在C#dotnet核心中测试RSA。我创建了两个RSA对象,一个用于加密,另一个用于解密。我从第一个rsa对象导出公钥,然后为另一个对象导入公钥。当第二个解密密码数组时,它抛出C# Internal.Cryptography.CryptoThrowHelper.WindowsCryptography在C中解密RSA时出现异常#,c#,rsa,.net-core,C#,Rsa,.net Core,我正在C#dotnet核心中测试RSA。我创建了两个RSA对象,一个用于加密,另一个用于解密。我从第一个rsa对象导出公钥,然后为另一个对象导入公钥。当第二个解密密码数组时,它抛出Internal.Cryptography.CryptoThrowHelper.WindowsCryptographException。 代码如下: String plainstr = "Hello World"; RSA rsa1 = RSA.Create(); RS
Internal.Cryptography.CryptoThrowHelper.WindowsCryptographException
。
代码如下:
String plainstr = "Hello World";
RSA rsa1 = RSA.Create();
RSA rsa2 = RSA.Create();
rsa1.KeySize = 1024;
rsa2.KeySize = 1024;
byte[] cipherbytes = rsa1.Encrypt(Encoding.ASCII.GetBytes(plainstr), RSAEncryptionPadding.Pkcs1);
//If the parameter is true, it works well. But when I use it in an actual project, I won't pass the private key.
RSAParameters parameters = rsa1.ExportParameters(false);
rsa2.ImportParameters(parameters);
//Exception is here.
byte[] plaintbytes = rsa2.Decrypt(cipherbytes, RSAEncryptionPadding.Pkcs1);
Console.WriteLine(Encoding.ASCII.GetString(plaintbytes));
Console.ReadKey();
这就是RSA加密的工作原理。您可以使用公钥
加密
,但只能使用私钥解密
在您的示例中,您使用rsa1
对象的私钥对字符串进行加密,将其公共参数复制到rsa2
并尝试使用它进行解密
也许你想做相反的事情?这就是RSA加密的工作原理。您可以使用公钥
加密
,但只能使用私钥解密
在您的示例中,您使用rsa1
对象的私钥对字符串进行加密,将其公共参数复制到rsa2
并尝试使用它进行解密
也许你想做相反的事?哦,天哪!我知道。但是我只是在编码的时候弄糊涂了,哈哈。谢谢大家!@伯阳很高兴你找到了它!你能把它标记为答案吗?是的,但是怎么做呢。我是新来的,找不到这样的人button@boyang按下“投票否决”按钮,你可以点击一张绿色支票。哦,我的上帝!我知道。但是我只是在编码的时候弄糊涂了,哈哈。谢谢大家!@伯阳很高兴你找到了它!你能把它标记为答案吗?是的,但是怎么做呢。我是新来的,找不到button@boyang按下向下投票按钮,您可以单击绿色复选框。