0

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

私の質問は、.NET2.0アプリケーションでプライベートに入力されたデータを復号化する方法です。パブリックキーでRSACrypoServiceProviderを使用するすべての試みは、失敗したことが証明されています。

ManagedOpenSSLライブラリに出くわしましたが、それも良くありませんでした。

StackOverflowの多くの人が同じようなことをしただろうと私は確信しています、そして彼らがそれをどのようにしたかを知っているといいでしょう。

事前にすべてのあなたの助けに感謝します。

4

2 に答える 2

0

.NETは、OpenSSLがサポートしていないXML形式のキーを使用します。私の推奨事項は、純粋なPHP RSA実装であるphpseclibを使用して、キーペアを生成するか、少なくとも既存のキーペアをXMLに変換することです。

于 2012-02-07T18:10:14.573 に答える
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は正しく復号化されました。

于 2012-02-09T08:40:27.780 に答える