2017-05-28 26 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是。

相關問題