繁体   English   中英

使用hashFunction C#的md5哈希

[英]md5 hash using hashFunction c#

我有以下代码:

...
   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校验和。 我做错了什么?

正如CodesInChaos所说: MD5.ComputeHash()返回base64中的值。 您必须自己将其转换为HEX格式(当然,如果需要的话)。 如何实现它的示例可以在以下示例中找到

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

提供的示例是正确的:

Base64 M1UOF9zlCe+LwCfDNcWGPw==等于33550e17dce509ef8bc027c335c5863f HEX。 使用Base64到Hex Converter进行检查!

输入:213441dasses输出:M1UOF9zlCe + LwCfDNcWGPw ==预期输出:33550e17dce509ef8bc027c335c5863f

您的预期输出是十六进制字符串,而实际输出不是。 您当前正在将哈希转换为基于64的字符串,这显然不是您想要的。

有关如何从哈希返回期望的十六进制字符串的信息,请参见此答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM