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);