2011-07-09 2 views
8

私は新しい公開鍵/秘密鍵のペアを生成し、XML文字列としてエクスポートしました:C#でのRSA暗号化:どの部分が公開鍵を定義していますか?

RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(2048); 
string publicPrivateKey = RSA.ToXmlString(true); 

publicPrivateKeyでXML文字列は、この(文字列が読みやすくするために短縮されている)のようになります。

<RSAKeyValue> 
    <Modulus>t6tLd1Wi7PEkwPfx9KGP1Ps/5F2saXnOsCE2U....</Modulus> 
    <Exponent>AQAB</Exponent> 
    <P>3LJ5y4Vla7cS3XgmbIH5dQgppUHa+aSWavEOCbDRS/M....</P> 
    <Q>1QyGIAnjv4YLcRVdwXtxWkijc+aZ496qIBZnCAUUD/E....</Q> 
    <DP>0821dc0f+LBKOqIEvj4+2kJrNV5ueQesFBYkEsjPFM....</DP> 
    <DQ>ugSzX2oDJwjdGKG1OOiVcmUWAm6IU4PpOxcUYtY8TC....</DQ> 
    <InverseQ>LDQIQu+LSB6CSZBrGxNQthWi9mkuPGVZyDDr....</InverseQ> 
    <D>qZm2bXKH8WwbsJ8ZlT3S1TbgUifppLrqSRkb8XqEcMv....</D> 
</RSAKeyValue> 

生成された公開鍵は、データを暗号化するために他のアプリケーション(PHP/JavaScript/JAVA)で使用する必要があります。上記のXMLのどの部分が公開鍵を定義するのか/他のアプリの開発者にどの部分を送る必要がありますか?

反対側:公開鍵で暗号化されたデータを復号化するために秘密鍵/パーツ/パーツを定義するものは何ですか?

答えて

3

他の当事者のRSAキーは.NETで生成するのが複雑です。 XMLを送信すると、すべてのパートナーがそれを使用できるわけではありません。あなたがproivedてきたXMLは、秘密鍵である

enter image description here

:公開鍵のための一般的な形式は、そのようなものです。公開鍵を生成するには、あなたはそのようになります

string publicPrivateKey = RSA.ToXmlString(false); 

の検索結果を使用する必要があります。

<RSAKeyValue> 
    <Modulus>t6tLd1Wi7PEkwPfx9KGP1Ps/5F2saXnOsCE2U....</Modulus> 
    <Exponent>AQAB</Exponent> 
</RSAKeyValue> 
あなたは、他の形式のキーを取得するために他の当事者を使用する場合があり

http://www.codeproject.com/KB/security/RSACryptoPad.aspx

Javaキーを.NET形式に移植するには、このプロジェクトを使用できます。

http://www.codeproject.com/KB/security/porting_java_public_key.aspx

+0

私はあなたが '.ToXmlString(false)'を意味すると思います。 http://msdn.microsoft.com/en-us/library/system.security.cryptography.rsa.toxmlstring.aspxは、boolがincludePrivateParametersであることを示します。 –

+2

よろしくお願いいたします。だから、私はこのXML(RSA.ToXmlString(false);)を開発者に送ることができ、PHP、JAVAなどでデータを暗号化できるようになりますか? – Mike

+0

@Mike、理想的な世界ではそうです:)しかし、あなたから必要な公開鍵フォーマットについて質問し、このフォーマットで鍵を提供する必要があります。答えからのリンクを使うと、それらを使って公開鍵を再生成するのは簡単です。 – VMAtm

3

公開鍵を定義する指数とモジュラス。

あなたはfalseにその唯一のパラメータincludePrivateParametersセットでRSA.ToXmlStringを使用する場合は、専用形式

<RSAKeyValue> 
    <Modulus>…</Modulus> 
    <Exponent>…</Exponent> 
</RSAKeyValue> 

出力が表示されます。

+0

@Json:つまり、文字列、モジュラス、指数の両方を開発者に送信する必要がありますか?公開鍵は常に2つの別々の文字列で構成されていますが、それは正しいのですか? – Mike

関連する問題