下載軟件后使用c#獲取文件的md5碼示例
很多朋友在下載文件的時(shí)候,經(jīng)常會(huì)發(fā)現(xiàn)網(wǎng)站提供了MD5校驗(yàn)碼,其實(shí)這個(gè)MD5碼的作用就是當(dāng)你下載文件好了之后,拿你下載好的文件的MD5校驗(yàn)碼,跟下載網(wǎng)站提供的進(jìn)行比較,如果完全一致,說(shuō)明你下載中文件沒(méi)問(wèn)題,如果校驗(yàn)碼不一致,說(shuō)明下載過(guò)程中你的文件出錯(cuò)了,或者是你的文件下載出錯(cuò)了,反正就是跟原始文件不一致。而且只要是文件不一樣,MD5碼肯定不一樣,這個(gè)是不會(huì)重復(fù)的,那么到底如何獲取文件的MD5碼呢?下面就使用C#代碼進(jìn)行講解。
//-----------------------------------------------------------------------
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;
using System.Security.Cryptography;
using System.IO;
namespace MD5FileForm
{
public partial class MD5Form : Form
{
public MD5Form()
{
InitializeComponent();
}
private void btnGetMD5_Click(object sender, EventArgs e)
{
MD5 md5 = MD5.Create();
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog();
FileStream fs = new FileStream(ofd.FileName, FileMode.Open);
byte[] bs = md5.ComputeHash(fs);
//獲取到MD5碼
string md5Str = BitConverter.ToString(bs).Replace("-","");
MessageBox.Show(string.Format("[{0}]的MD5碼為:\n{1}",ofd.FileName,md5Str));
}
}
}
第二個(gè)使用示例
using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;
namespace Test
{
public class MD5Code
{
/// <summary>
/// 獲取文件的MD5碼
/// </summary>
/// <param name="fileName">傳入的文件名(含路徑及后綴名)</param>
/// <returns></returns>
public string GetMD5HashFromFile(string fileName)
{
try
{
FileStream file = new FileStream(fileName, System.IO.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();
}
catch (Exception ex)
{
throw new Exception("GetMD5HashFromFile() fail,error:" + ex.Message);
}
}
}
}
相關(guān)文章
.NET中保證線程安全的高級(jí)方法Interlocked類使用介紹
這篇文章主要介紹了.NET中保證線程安全的高級(jí)方法Interlocked類使用介紹,Interlocked類可以為為多個(gè)線程共享的變量提供原子操作,需要的朋友可以參考下2014-07-07
基于WPF實(shí)現(xiàn)簡(jiǎn)單的值轉(zhuǎn)換器
值轉(zhuǎn)換器是?WPF?項(xiàng)目中具有特色的組成部分,這篇文章將帶大家實(shí)現(xiàn)一個(gè)標(biāo)準(zhǔn)的值轉(zhuǎn)換器,文中的示例代碼講解詳細(xì),有需要的小伙伴可以參考一下2025-02-02
C#實(shí)現(xiàn)windows form限制文本框輸入的方法
這篇文章主要介紹了C#實(shí)現(xiàn)windows form限制文本框輸入的方法,涉及C#限制文本框輸入的技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04
C#獲得MAC地址(網(wǎng)卡序列號(hào))的實(shí)現(xiàn)代碼
這篇文章主要介紹了C#獲得MAC地址的實(shí)現(xiàn)代碼,需要的朋友可以參考下2014-02-02
C#筆記之EF Code First 數(shù)據(jù)模型 數(shù)據(jù)遷移
EF 中 Code First 的數(shù)據(jù)遷移網(wǎng)上有很多資料,我這份并沒(méi)什么特別。Code First 創(chuàng)建視圖網(wǎng)上也有很多資料,但好像很麻煩,而且親測(cè)好像是無(wú)效的方法(可能是我太笨,沒(méi)搞成功),我摸索出了一種簡(jiǎn)單有效的方法,這里分享給大家2021-09-09
C#中動(dòng)態(tài)顯示當(dāng)前系統(tǒng)時(shí)間的實(shí)例方法
想在網(wǎng)頁(yè)中動(dòng)態(tài)地顯示當(dāng)前系統(tǒng)的時(shí)間,找了好多,不過(guò)都是一些停在那里不動(dòng)的。。。不過(guò)皇天不負(fù)有心人,終于讓我找到了2013-05-05

