4

こんにちは、.net で生成された RSA の秘密鍵と公開鍵があります。

この形式で

string privateKey = "<RSAKeyValue>" +
                         "<Modulus>...kCFhsjB4xMW49mrx5B/Ga...</Modulus>" +
                         "<Exponent>...</Exponent>" +
                         "<P>...7bRCrQVgVIfXdTIH3iY8x...</P>" +
                         "<Q>...4SiQDhrAZADuFDTr7bRCrQVgVIfXdTIH3iY8x...</Q>" +
                         "<DP>...ZADuFDTr7bRCrQVgVIfXdT...</DP>" +
                         "<DQ>...4SiQDhrAZADuFDTr...</DQ>" +
                         "<InverseQ>...sjB4xMW49mrx5B/Ga...</InverseQ>" +
                         "<D>...SiQDhrAZADuFDTr7bRCrQVgVIf...</D>" +
                     "</RSAKeyValue>";

これを変換して、php openssl関数で使用してデータを暗号化および復号化するにはどうすればよいですか? 公開鍵と秘密鍵の両方を変換する必要があります。

おそらく、Linux の openssl bash コマンドを使用して、独自のモジュラス、指数などを指定できますか?

何か案は?

ありがとう

4

1 に答える 1

1

残念ながら、あなたが説明した正確な問題の解決策は見つかりませんでしたが、役に立つと思われるいくつかの回避策があります:

  • .NET ソースにアクセスできる場合は、キーを PEM としてエクスポートできます。(これが標準のシステム ライブラリで可能かどうかは確信が持てませんが、確実にBouncyCastleでサポートされています。
  • 別の言語を使用してキーを翻訳する余裕がある場合、これは perl で比較的簡単に行うことができます。

    Crypt::OpenSSL::RSA を使用します。
    Crypt::OpenSSL::Bignum を使用します。
    MIME::Base64 を使用します。
    $modulus = Crypt::OpenSSL::Bignum->new_from_bin(decode_base64($XMLModulus));
    $exponent= Crypt::OpenSSL::Bignum->new_from_bin(decode_base64($XMLExponent));
    # 残りのパラメーターは最初の 2 つと同じで読み込むことができます
    # dq、dp、および inverseQ は必要ありません
    $privateKey = Crypt::OpenSSL::RSA->($modulus, $exponent, $d, $p, $q)
    # PHP がサポートする標準バイナリ形式 (DER) で出力します。print $privateKey->get_private_key_string()
    # PEM が必要な場合は、openssl で確実に変換できます。

申し訳ありませんが、PHP で適切な解決策を得ることができませんでした。ただし、C# ソリューションが機能することを願っています。

于 2010-05-04T16:36:45.107 に答える