如何在C#中创建一个MD5文件

3

如何在C#中创建MD5?我想调用txt文件并在C#中调用MD5对其进行哈希处理。

public static string MD5Hash(string text)
{
    System.Security.Cryptography.MD5 md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
    return System.Text.RegularExpressions.Regex.Replace(BitConverter.ToString(md5.ComputeHash(ASCIIEncoding.Default.GetBytes(text))), “-”, “”);
}

“需要紧急处理”并不能让我们更快地帮助您。无论如何,您已经知道如何计算哈希值了,那么问题出在哪里呢? - Marlon
我的问题是如何在C#中编写一个MD5,并通过调用函数来调用此MD5文件以对txt文件中的数据进行哈希处理。 - CutexBabies
1个回答

9

以下内容直接摘自此处

protected string GetMD5HashFromFile(string fileName)
{
  FileStream file = new FileStream(fileName, FileMode.Open);
  MD5 md5 = new MD5CryptoServiceProvider();
  byte[] retVal = md5.ComputeHash(file);
  file.Close();

  StringBuilder sb = new StringBuilder();
  for (int i = 0; i < retVal.Length; i++)
  {
    sb.Append(retVal[i].ToString("x2"));
  }
  return sb.ToString();
}

@CutexBabies: "x2"是一个两位十六进制数的格式字符串。例如,255.ToString("x2")返回"ff" - dtb
这是Byte.ToString(string format)方法。 "x2"是格式说明符,表示您想要一个两位数的零填充十六进制数字。 - King Skippus
如果我得到一个很长的文本...它是否仍然会保持为x2?为什么有些人声明为x? - CutexBabies
x2只是一个格式说明符,仅此而已,并与文件的长度无关。它告诉C#如何显示数字。如果数字小于16,则x2将用零填充数字。例如,12显示为0c。如果您只使用“x”作为格式说明符,则12将仅显示为c。请阅读:http://msdn.microsoft.com/en-us/library/dwhawy9k.aspx - King Skippus
对此只有一个备注:使用 using 来处理文件流以确保正确的清理。using (FileStream file = new FileStream(fileName, FileMode.Open)) { /* code */ } - Nyerguds
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接