簡體   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