[C#] MD5,SHA1,SHA256 驗證檔案正確

2012-10-04

 

MD5,SHA1,SHA256 這三種加密方法,是不可逆的,也就是說它是一種採樣法

那能幹嘛?! 基本上就是驗證資料正確性,所以網路上很多破解法,理論上是用類似像是比對字典的方法去破解原始密碼是什麼,

這也是為什麼後期再使用MD5 會加入一些鹽巴(SALT) ,尤其是做網站的時候儲存密碼資料,如果使用MD5 ,都一定要加SALT..

其實採樣法很多種,目前這篇重點在於我怎麼去做出跟ubuntu 網站下載的iso 一樣的md5 認證碼..

因為那比較偏向一些機構會常用的採用方法,當然如果你是公司對公司,可以採取做法可能使用檔名+檔案大小或是一些meta data 去做雜湊即可

透過下列方式必須全部讀檔會較耗記憶體,當然如果公司對公司大量傳遞資料自己是可以自訂採樣方法…

我下載的檔案是

http://www.ubuntu-tw.org/download/download.php?distro=desktop&version=12.04&arch=i386

ubuntu 12.04 destop i386 ..

這時候就可以透過下列方法驗證 其實 MD5,SHA1,SHA256 Code 都一樣 只是要改不同的CryptoServiceProvider

MD5 :

var tragetFile = new System.IO.FileStream(@"C:\Users\Stark\Downloads\ubuntu-12.04-desktop-i386.iso", System.IO.FileMode.Open);
var md5 = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] hashbytes = md5.ComputeHash(tragetFile);
tragetFile.Close();
 
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < hashbytes.Length; i++)
{
    sb.Append(hashbytes[i].ToString("x2"));
}
Response.Write(sb.ToString());

 


結果:


2012-08-21_182243


 


SHA1:



var tragetFile = new System.IO.FileStream(@"C:\Users\Stark\Downloads\ubuntu-12.04-desktop-i386.iso", System.IO.FileMode.Open);
var sha1 = new System.Security.Cryptography.SHA1CryptoServiceProvider();
byte[] hashbytes = sha1.ComputeHash(tragetFile);
tragetFile.Close();
 
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < hashbytes.Length; i++)
{
    sb.Append(hashbytes[i].ToString("x2"));
}
Response.Write(sb.ToString());

結果:


2012-08-21_183019


 


SHA256:



var tragetFile = new System.IO.FileStream(@"C:\Users\Stark\Downloads\ubuntu-12.04-desktop-i386.iso", System.IO.FileMode.Open);
var sha256 = new System.Security.Cryptography.SHA256CryptoServiceProvider();
byte[] hashbytes = sha256.ComputeHash(tragetFile);
tragetFile.Close();
 
System.Text.StringBuilder sb = new System.Text.StringBuilder();
for (int i = 0; i < hashbytes.Length; i++)
{
    sb.Append(hashbytes[i].ToString("x2"));
}
Response.Write(sb.ToString());

結果:


2012-08-21_183328


 


最後強調,採樣方式雙方協定即可,這方式會將檔案打開全部讀取後取雜湊值,所以自訂規則可以讓速度提升很多


因為網路上的檔案他會注重有惡意人士放入病毒重新包裝,所以這些下載機構才會務必做到全部驗證…


當麻許的超技八 2014 | Donma Hsu Design.