using NCC.Dependency;
using System;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
namespace NCC.DataEncryption
{
///
/// MD5 加密
///
[SuppressSniffer]
public static unsafe class MD5Encryption
{
///
/// 字符串 MD5 比较
///
/// 加密文本
/// MD5 字符串
/// 是否输出大写加密,默认 false
/// bool
public static bool Compare(string text, string hash, bool uppercase = false)
{
var hashOfInput = Encrypt(text, uppercase);
return hash.Equals(hashOfInput, StringComparison.OrdinalIgnoreCase);
}
///
/// MD5 加密
///
/// 加密文本
/// 是否输出大写加密,默认 false
///
public static string Encrypt(string text, bool uppercase = false)
{
using var md5Hash = MD5.Create();
var data = md5Hash.ComputeHash(Encoding.UTF8.GetBytes(text));
var stringBuilder = new StringBuilder();
for (var i = 0; i < data.Length; i++)
{
stringBuilder.Append(data[i].ToString("x2"));
}
var hash = stringBuilder.ToString();
return !uppercase ? hash : hash.ToUpper();
}
}
}