2017-05-28 29 views
0

我在单独的文件中有私钥和公钥。私钥错误中的参数不正确

在指令

说,使用此代码:

RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); 

rsa.FromXmlString(PrivateKey); 

但是当代码到达第二行我得到这个错误:

型“System.Security.Cryptography.CryptographicException”未处理的异常的发生在mscorlib.dll中

附加信息:该参数不正确。

有什么问题?

从公司,我们已经拿到了关键的代码示例

,它采用了样本peivate和公钥这样的:

<RSAKeyValue><Modulus>KEY VALUE</Modulus><Exponent>AQAB</Exponent></RSAKeyValue> 

即使我加入<RSAKeyValue><Modulus>的开始和</Modulus><Exponent>AQAB</Exponent></RSAKeyValue>

到最后,还没有作品

+0

你能举一个例子私钥吗? –

回答

0

我用这个网站,我的重点从单纯的字符串转换成XML:

https://superdry.apphb.com/tools/online-rsa-key-converter

因为净想以XML格式键

+0

这是解决您的问题的答案吗? –

+0

@ ArtjomB。是的,我希望C#中的任何代码将我的密钥转换为xml,反之亦然,如上面的网站 –

+0

您在答案中链接到的网站包含完整的代码。如果您在该页面上向下滚动,则会出现链接。 –

-1

不是每个关键字符串都是有效的关键字节。问题可能在于此。尝试使用波纹管代码生成密钥,并使用与您的代码,看看问题是否与逻辑或用钥匙串:

var rsa1 = new RSACryptoServiceProvider([number of bits of code]); 
Console.WriteLine(rsa1.ToXmlString(true)); 
+0

没有更多的答案? –

+0

关于这个的任何消息? – Emad

+0

我在.NET中搜索和理解应该将私钥和公钥转换为xml,但是我不知道将它们转换的过程是什么 –

0

最可能的原因是,你的私钥不具备所有的d,P,Q,DP,DQ,InverseQ值。

下一个最有可能的原因是你的D,在字节[]形式,不像模数(字节[]形式)长。在同样的情况下,P/Q/DP/DQ/InverseQ都需要将它们的byte []形式作为Modulus长度的一半(向上舍入)。

有一些键在XML格式中并非如此。最可靠的方法是自己构建RSAParameters结构并致电ImportParameters。一个原因:XML方法根本不在.NET Core中可用,但ImportParameters是。

相关问题