7

ファイルの URL をパラメーターとして取り、そのファイルの MD5 ハッシュを返す関数を作成しました。

この関数によって (開発環境で) 生成されたハッシュは、同じファイルに対してサードパーティ ツールによって生成されたハッシュと一致します。

しかし、これがクライアントの QA 環境に展開されたとき、この関数は関数が呼び出されるたびに異なる値を返します。

私はいくつかのGoogle-ingを行い、問題はdevが原因である可能性があることを発見しました. サーバーは 64 ビットで、QA サーバーは 32 ビットでした。クライアントのサーバーにアクセスできないため、別の 32 ビット サーバーにデプロイしたところ、32 ビット サーバーでもハッシュが一致することがわかりました (機能は期待どおりに機能しますか?)。

この質問も見ました。

ここに私が書いた関数があります:

public static String GetMD5HashFromFile(String url)
{
    String response = String.Empty;
    HttpWebRequest aRequest = (HttpWebRequest)WebRequest.Create(url);
    using (HttpWebResponse aResponse = (HttpWebResponse)aRequest.GetResponse())
    {
        MD5 md5 = new MD5CryptoServiceProvider();
        byte[] retVal = md5.ComputeHash(aResponse.GetResponseStream());
        response = "MD5:" + BitConverter.ToString(retVal).Replace("-", string.Empty);
    }
    return response;
}

私の質問は次のとおりです。この関数がさまざまな値を返す理由は何でしょうか? 問題は私の機能にありますか?

4

1 に答える 1

1

ログを追加してみてください。そのため、最初にファイルを文字列にダウンロードします (後で比較するために、ディスクのどこかに書き込みます)。次に、ディスク上のハッシュを計算します。私のプロジェクトの 1 つでこのような問題が発生しました。その場合、応答に何かを追加するプロキシ サーバーに問題がありました。しかし、ディスク上にファイルがなければ、それらを比較することはできません。

于 2013-04-10T18:38:11.890 に答える