请问怎样获取一个文件的md5消息摘要?

ynnwq 2007-06-13 12:36:12
为了判断两个文件是否相同,我需要通过计算这两个文件的md5消息摘要,请问怎么编码实现?
...全文
649 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
AhJo 2007-06-14
  • 打赏
  • 举报
回复
请问个比较弱的问题
public static string getFileHash(string filePath)
一定要static么?
在这里有什么作用?
csShooter 2007-06-13
  • 打赏
  • 举报
回复
好贴...关注
killer_liqiao 2007-06-13
  • 打赏
  • 举报
回复
MARK
学习
hy_lihuan 2007-06-13
  • 打赏
  • 举报
回复
学习一下
wszhoho 2007-06-13
  • 打赏
  • 举报
回复
打个标记
viena 2007-06-13
  • 打赏
  • 举报
回复
汗,楼上说的是
不用那么麻烦,可以直接传入FileStream

public static string getFileHash(string filePath)
{
FileStream fs = new FileStream(filePath, FileMode.Open);
MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(fs);
fs.Close();
string sResult = "";
foreach(byte b in result)
{
sResult += Convert.ToString(b,16);
}
return sResult;
}
zxkid 2007-06-13
  • 打赏
  • 举报
回复
ComputeHash()本身就支持FileStream的

FileStream fs = new FileStream(buttonEditFile.Text, FileMode.Open, FileAccess.Read);
MD5 md5 = MD5.Create();
byte[] code = md5.ComputeHash(fs);

StringBuilder sb = new StringBuilder();
for (int i = 0; i < code.Length; i++)
sb.Append(code[i].ToString("X2"));

textEditResult.Text = sb.ToString();
cq_lqj 2007-06-13
  • 打赏
  • 举报
回复
viena(维也纳N02)的方法基本可用,但对于大文件是有问题的,也不能带进度条提取文件的MD5,最好将
sResult += Convert.ToString(b,16);
修改为
sResult += Convert.ToString(b,16)).PadLeft(2, '0');

带进度条的提取文件的MD5,见《程序员秘书》--源代码--目录及文件--生成文件或字符串的MD5

详见:http://www.psec.net.cn
aSalt 2007-06-13
  • 打赏
  • 举报
回复
同意楼上HASH
viena 2007-06-13
  • 打赏
  • 举报
回复
using System.Security.Cryptography;
using System.Text;



public static string getFileHash(string filePath)
{
FileStream fs = new FileStream(filePath, FileMode.Open);
int len = (int)fs.Length;
byte[] data = new byte[len];
fs.Read(data, 0, len);
fs.Close();
MD5 md5 = new MD5CryptoServiceProvider();
byte[] result = md5.ComputeHash(data);
string sResult = "";
foreach(byte b in result)
{
sResult += Convert.ToString(b,16);
}
return sResult;
}
Red_angelX 2007-06-13
  • 打赏
  • 举报
回复
FileStream打开一个文件流
直接MD5文件流 似乎FileStream不能打开超过2G的文件
AhJo 2007-06-13
  • 打赏
  • 举报
回复
public string MD5(String str)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] data = System.Text.Encoding.Default.GetBytes(str);
byte[] result = md5.ComputeHash(data);
String ret = "";
for (int i = 0; i < result.Length; i++)
ret += result[i].ToString("x").PadLeft(2, '0');
return ret;
}
hamehameha 2007-06-13
  • 打赏
  • 举报
回复
关注
wzd24 2007-06-13
  • 打赏
  • 举报
回复
先读取这两个文件到Byte[]数组中,然后用MD5.ComputeHash()方法来获取它们的MD5值!
xvting 2007-06-13
  • 打赏
  • 举报
回复
可以使用 byte[] MD5CryptoServiceProvider.ComputeHash(byte[]) 方法
csShooter 2007-06-13
  • 打赏
  • 举报
回复
http://www.ietf.org/rfc/rfc1321.txt

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧