C#计算文件的MD5,SHA1值

求文件的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) == falsereturn 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) == falsereturn 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());
            }

        }

    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值