0

私はこのコードを持っています:

...
   private void bBrowse_Click(object sender, EventArgs e)
    {

    OpenFileDialog ofd = new OpenFileDialog();
        if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string FileName = ofd.FileName;
                tbKeyFile.Text = FileName;
            }
        if (!String.IsNullOrEmpty(tbKeyFile.Text))
        {

            FileStream fs = new FileStream(tbKeyFile.Text, FileMode.Open);

            MD5 hashFunction = MD5.Create();
            byte[] computedHashCode = hashFunction.ComputeHash(fs);

            string HashInString = Convert.ToBase64String(computedHashCode);

            lHash.Text = HashInString;
         }

    }
...

しかし、それはmd5ハッシュを計算していません。SHA1チェックサムを計算しています。私は何を間違えますか?

4

2 に答える 2

1

CodesInChaosが言ったように:base64MD5.ComputeHash()で値を返します。自分でHEX形式に変換する必要があります(もちろん必要な場合)。それをどのように達成できるかの例は、例えばここで見つけることができます:

string HashInString = BitConverter.ToString(computedHashCode ).Replace("-", "");

提供された例は正しいです:

M1UOF9zlCe+LwCfDNcWGPw==inはHEXBase64と同じです。Base64 to Hex Converter33550e17dce509ef8bc027c335c5863fを使用して確認してください!

于 2013-02-26T17:32:45.123 に答える
0

入力:213441dasses出力:M1UOF9zlCe + LwCfDNcWGPw ==期待される出力:33550e17dce509ef8bc027c335c5863f

期待される出力は16進文字列ですが、実際の出力はそうではありません。現在、ハッシュを64ベースの文字列に変換していますが、これは明らかに必要なものではありません。

ハッシュから予想される16進文字列を返す方法については、この回答を参照してください。

于 2013-02-26T17:32:44.333 に答える