1. 如果是要獲得某個字符串的SHA256,代碼如下:
public static string SHA256(string str)
{
//如果str有中文,不同Encoding的sha是不同的!!
byte[] SHA256Data = Encoding.UTF8.GetBytes(str);
SHA256Managed Sha256 = new SHA256Managed();
byte[] by = Sha256.ComputeHash(SHA256Data);
return BitConverter.ToString(by).Replace("-", "").ToLower(); //64
//return Convert.ToBase64String(by); //44
}
2. 如果想要獲得某個文件的SHA256, 代碼如下:
public string SHA256()
{
string str = @"C:\Users\ICCWDT_Driver\iccwdt.sys";
FileStream stream = new FileStream(str, FileMode.Open);
SHA256Managed Sha256 = new SHA256Managed();
byte[] by = Sha256.ComputeHash(stream);
return BitConverter.ToString(by).Replace("-", "").ToLower(); //64
//return Convert.ToBase64String(by); //44
}
3. 通過查看系統的API可以看到可以傳入的參數有兩種:就是傳入byte[]類型或者Stream類型
// 摘要:
// 計算指定字節數組的哈希值。
//
// 參數:
// buffer:
// 要計算其哈希代碼的輸入。
//
// 返回結果:
// 計算所得的哈希代碼。
//
// 異常:
// System.ArgumentNullException:
// buffer 為 null。
//
// System.ObjectDisposedException:
// 此對象已釋放。
public byte[] ComputeHash(byte[] buffer);
//
// 摘要:
// 計算指定 System.IO.Stream 對象的哈希值。
//
// 參數:
// inputStream:
// 要計算其哈希代碼的輸入。
//
// 返回結果:
// 計算所得的哈希代碼。
//
// 異常:
// System.ObjectDisposedException:
// 此對象已釋放。
public byte[] ComputeHash(Stream inputStream);
