[英]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.