2011-04-07 180 views
2

有沒有辦法從c#中的私鑰中提取公鑰?如果我這樣做ToXMLString(),那麼我可以設置,如果我想要公鑰信息與私鑰保存。那麼現在我想,有沒有辦法從私人中提取公鑰?c#RSA從私鑰中提取公鑰

+0

要從中提取公鑰的文件的名稱是什麼? – 2011-04-07 19:29:42

+0

那麼它不是一個文件,它實際上是一個RSACryptoServiceProvider() – hs2d 2011-04-07 19:34:09

回答

1

RSA的普通私有密鑰格式包括公鑰(「公開指數」用於抵抗定時攻擊的方式實現私鑰操作)。因此,可以從私鑰中提取公鑰。 (理論上可能有一個「純粹的RSA私鑰」,它不包括公開指數,但它有缺點,比如防止側向信道攻擊的難度更大,並且性能下降。你可以假設當你有私鑰時,你實際上擁有完整的密鑰對)

在C#/ .NET標準庫中,公共和私有RSA密鑰可以表示爲XML字符串(ToXmlString()FromXmlString())或定製的RSAParameters結構(ExportParameters()ImportParameters())。如果您可以獲得完整的私鑰,那麼您只需選擇構成公鑰的公共字段(模數和公開指數)即可。請注意,RSACryptoServiceProvider可能是底層RSA實現的接口,可能拒絕導出私鑰(但通常會接受導出公鑰)。

+0

)謝謝!正是我希望聽到的(: – hs2d 2011-04-07 19:33:14

0

如果您可以保存它幷包含私鑰,那麼您保存的不僅僅是私鑰。

但是,如果你真的只有私鑰,那麼不,你不能從中提取公鑰。如果你能做到這一點,你會使大多數今天的安全過時。所以基本上,我不相信你只有私鑰,你有一個密鑰對,你應該能夠從中提取公鑰。

無論在C#還是.NET中都很容易實現,我不知道。

+0

感謝您的回答。 – hs2d 2011-04-07 19:40:28

0

從私鑰取模數,公開指數是 - 最可能的 - 65537.迄今爲止,我所見過的所有微軟密碼系統都會生成帶有該指數的公鑰。公開指數和模數的組合是公鑰。

+0

感謝您的回答。 – hs2d 2011-04-07 19:39:00

+0

@ hs2d:在這裏,你通過upvoting說「謝謝」。 :) – 2011-04-07 19:43:31

+0

哦,那麼,這意味着我必須註冊我的帳戶(: – hs2d 2011-04-07 19:50:22