4

Webで見つけられるすべての例を試しましたが、VB6アプリから同じMD5ハッシュ結果を生成するための.NETコードを取得できません。

VB6アプリは、次のサイトと同じ結果を生成します: http ://www.functions-online.com/md5.html

しかし、C#の同じ入力に対して同じ結果を得ることができません(MD5.ComputeHashメソッドまたはFormsAuthentication暗号化メソッドのいずれかを使用)

助けてください!!!!

要求に応じて、ここにいくつかのコードがあります。これはMSDNから直接取得されます。

    public string hashString(string input)
    {
        // Create a new instance of the MD5CryptoServiceProvider object.
        MD5 md5Hasher = MD5.Create();

        // Convert the input string to a byte array and compute the hash.
        byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(input));

        // Create a new Stringbuilder to collect the bytes
        // and create a string.
        StringBuilder sBuilder = new StringBuilder();

        // Loop through each byte of the hashed data 
        // and format each one as a hexadecimal string.
        for (int i = 0; i < data.Length; i++)
        {
            sBuilder.Append(data[i].ToString("x2"));
        }

        // Return the hexadecimal string.
        return sBuilder.ToString();
    }

私のテスト文字列は次のとおりです。

QWERTY123TEST

このコードの結果は次のとおりです。

8c31a947080131edeaf847eb7c6fcad5

テストMD5の結果は次のとおりです。

f6ef5dc04609664c2875895d7da34eb9

注:TestMD5の結果は、私が期待しているものです。

注:私は本当に、本当に愚かで、申し訳ありません-ちょうど私が間違った入力をしたことに気づきました。ハードコーディングするとすぐに機能しました。助けてくれてありがとう

4

2 に答える 2

16

これは、動作することがわかっているC#MD5メソッドであり、さまざまなWebRestfulAPIを介して認証するために使用しました。

   public static string GetMD5Hash(string input)
    {
        System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
        byte[] bs = System.Text.Encoding.UTF8.GetBytes(input);
        bs = x.ComputeHash(bs);
        System.Text.StringBuilder s = new System.Text.StringBuilder();
        foreach (byte b in bs)
        {
            s.Append(b.ToString("x2").ToLower());
        }
        return s.ToString();

    }
于 2009-08-10T17:05:24.877 に答える
1

「functions-online」サイト(http://www.functions-online.com/md5.html)がMD5の権威である理由は何ですか?私にとっては、ISO-8859-1でのみ問題なく動作します。しかし、ISO-8859-1以外のものを貼り付けようとすると、同じMD5ハッシュが返されます。キリル文字の大文字Bを単独で試してください。コードポイントは0x412です。または、水の漢民族のシンボル、コードポイント0x98A8を試してください。私の知る限り、投稿されたC#アプレットは正しいです。

于 2009-08-19T22:16:27.827 に答える