求文件的MD5,SHA1值,支持拖放
using
System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
using System.IO;
namespace FileHashCalc
... {
public partial class Form1 : Form
...{
public Form1()
...{
InitializeComponent();
}
/**//// <summary>
/// 求文件的MD5值
/// </summary>
/// <param name="strFileName">文件的绝对路径</param>
/// <returns>文件的MD5值</returns>
private string GetFileMD5(string strFileName)
...{
if (File.Exists(strFileName) == false) return null;
MD5 myMD5 = MD5.Create();
FileStream myFileStream = new FileStream(strFileName, FileMode.Open, FileAccess.Read);
byte[] data1 = new byte[myFileStream.Length];
myFileStream.Read(data1, 0, data1.Length);
myFileStream.Close();
byte[] data2 = myMD5.ComputeHash(data1);
StringBuilder myBuilder = new StringBuilder();
for (int i = 0; i < data2.Length; i++)
...{
myBuilder.Append(data2[i].ToString("x2"));
}
return myBuilder.ToString();
}
/**//// <summary>
/// 求文件的SHA1值
/// </summary>
/// <param name="strFileName">文件的绝对路径</param>
/// <returns>文件的SHA1值</returns>
private string GetFileSHA1(string strFileName)
...{
if (File.Exists(strFileName) == false) return null;
SHA1 mySHA1=SHA1.Create();
FileStream myFileStream=new FileStream(strFileName,FileMode.Open,FileAccess.Read);
byte[] data1=new byte[myFileStream.Length];
myFileStream.Read(data1,0,data1.Length);
myFileStream.Close();
byte[] data2=mySHA1.ComputeHash(data1);
StringBuilder myBuilder=new StringBuilder();
for(int i=0;i<data2.Length;i++)
...{
myBuilder.Append(data2[i].ToString("x2"));
}
return myBuilder.ToString();
}
private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
...{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
...{
e.Effect = DragDropEffects.Link;
}
else
...{
e.Effect = DragDropEffects.None;
}
}
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
...{
if (((System.Array)e.Data.GetData(DataFormats.FileDrop)).Length > 1)
...{
MessageBox.Show("文件数大于1", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
...{
textBox1.Text = GetFileMD5(((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString());
textBox2.Text = GetFileSHA1(((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString());
}
}
}
}
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Security.Cryptography;
using System.IO;
namespace FileHashCalc
... {
public partial class Form1 : Form
...{
public Form1()
...{
InitializeComponent();
}
/**//// <summary>
/// 求文件的MD5值
/// </summary>
/// <param name="strFileName">文件的绝对路径</param>
/// <returns>文件的MD5值</returns>
private string GetFileMD5(string strFileName)
...{
if (File.Exists(strFileName) == false) return null;
MD5 myMD5 = MD5.Create();
FileStream myFileStream = new FileStream(strFileName, FileMode.Open, FileAccess.Read);
byte[] data1 = new byte[myFileStream.Length];
myFileStream.Read(data1, 0, data1.Length);
myFileStream.Close();
byte[] data2 = myMD5.ComputeHash(data1);
StringBuilder myBuilder = new StringBuilder();
for (int i = 0; i < data2.Length; i++)
...{
myBuilder.Append(data2[i].ToString("x2"));
}
return myBuilder.ToString();
}
/**//// <summary>
/// 求文件的SHA1值
/// </summary>
/// <param name="strFileName">文件的绝对路径</param>
/// <returns>文件的SHA1值</returns>
private string GetFileSHA1(string strFileName)
...{
if (File.Exists(strFileName) == false) return null;
SHA1 mySHA1=SHA1.Create();
FileStream myFileStream=new FileStream(strFileName,FileMode.Open,FileAccess.Read);
byte[] data1=new byte[myFileStream.Length];
myFileStream.Read(data1,0,data1.Length);
myFileStream.Close();
byte[] data2=mySHA1.ComputeHash(data1);
StringBuilder myBuilder=new StringBuilder();
for(int i=0;i<data2.Length;i++)
...{
myBuilder.Append(data2[i].ToString("x2"));
}
return myBuilder.ToString();
}
private void Form1_DragEnter(object sender, System.Windows.Forms.DragEventArgs e)
...{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
...{
e.Effect = DragDropEffects.Link;
}
else
...{
e.Effect = DragDropEffects.None;
}
}
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
...{
if (((System.Array)e.Data.GetData(DataFormats.FileDrop)).Length > 1)
...{
MessageBox.Show("文件数大于1", "温馨提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
...{
textBox1.Text = GetFileMD5(((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString());
textBox2.Text = GetFileSHA1(((System.Array)e.Data.GetData(DataFormats.FileDrop)).GetValue(0).ToString());
}
}
}
}