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