using System;
using System.IO;
using System.Text;
namespace AlicizaX
{
public static partial class Utility
{
///
/// 哈希计算相关的实用函数。
///
public static partial class Hash
{
///
/// Md5
///
public static class MD5
{
private static readonly System.Security.Cryptography.MD5 MD5Cryptography = System.Security.Cryptography.MD5.Create();
///
/// 获取字符串的Md5值
///
///
///
public static string Hash(string input)
{
var data = MD5Cryptography.ComputeHash(Encoding.UTF8.GetBytes(input));
return ToHash(data);
}
///
/// 获取流的Md5值
///
///
///
public static string Hash(Stream input)
{
var data = MD5Cryptography.ComputeHash(input);
return ToHash(data);
}
///
/// 验证Md5值是否一致
///
///
///
///
public static bool IsVerify(string input, string hash)
{
var comparer = StringComparer.OrdinalIgnoreCase;
return 0 == comparer.Compare(input, hash);
}
static string ToHash(byte[] data)
{
var sb = new StringBuilder();
foreach (var t in data)
{
sb.Append(t.ToString("x2"));
}
return sb.ToString();
}
///
/// 获取指定文件路径的Md5值
///
///
///
public static string FileHash(string filePath)
{
using (FileStream file = new FileStream(filePath, FileMode.Open))
{
return Hash(file);
}
}
}
}
}
}