2012-02-06 15 views
0

私はデスクトップアプリケーション(.NET 2.0)を開発しており、php/mysqlを実行しているサーバーから情報を取得する必要があります。サーバー側のプロバイダは、openssl_private_encryptメソッドを使用して暗号化を使用することに決めたので、私にpublickey.pemファイルを提供しました。私はphp/mysqlがうまくいかないが、asp .netを使用していたとしてもそれは違うとは思っていない。OpenSSL PHP RSA暗号化:クライアント側でどのライブラリを復号化するのですか?

私の質問は、.NET 2.0アプリケーションでプライベートエンリートされたデータをどのように復号化するのですか。公開鍵でRSACrypoServiceProviderを使用しようとする私の試みは失敗しています。

私はManagedOpenSSLライブラリを見つけましたが、それもうまくいきませんでした。

私はStackOverflowの方が似たようなことをしていると確信しています。

あなたの助けを前もって気に入ってください。

答えて

0

ここで私はそれを動作させるために使用しました!

  HttpWebResponse response = (HttpWebResponse) request.GetResponse(); 
      string responseFromServerEnc = string.Empty; 

      byte[] data = null; 

      if (HttpStatusCode.OK == response.StatusCode) 
      { 
       MemoryStream memoryStream = new MemoryStream(0x10000); 

       using (Stream responseStream =   request.GetResponse().GetResponseStream()) 
       { 
        byte[] buffer = new byte[0x1000]; 
        int bytes; 
        while ((bytes = responseStream.Read(buffer, 0, buffer.Length)) > 0) 
        { 
         memoryStream.Write(buffer, 0, bytes); 
        } 

        data = memoryStream.ToArray(); 
       } 

       response.Close(); 
      } 


      const string pubKey = "-----BEGIN PUBLIC KEY-----\n key from .pem file \n-----END PUBLIC KEY-----"; 
      PemReader pem = new PemReader(new StringReader(pubKey)); 
      RsaKeyParameters bcp = (RsaKeyParameters)pem.ReadObject(); 

      string responseFromServer = Encoding.UTF8.GetString(Decrypt(data,bcp)); 

また、responseFromServerEncは暗号化されたメッセージであり、responseFromServerは正しく復号化されました。

0

.NETは、OpenSSLがサポートしていないXML形式のキーを使用します。キーのペアを生成するか、少なくとも既存のものをphpseclib, a pure PHP RSA implementationでXMLに変換することをお勧めします。

+0

ありがとうnewbert。しかし、鍵ペアを生成すると、私は生成する秘密鍵を使用するようにサーバ管理者に依頼し、そのような要求を歓迎するとは思わないということです。 以下に回答を掲載します。 しかし、私はそれがヒットとトライアルの数時間後に動作するように管理したと思う。私はBouncyCastleを使いました。その後、ヒットアンドトライアルを少しして、それを把握しました。 – Digvijay

関連する問題