MD5Encryption.cs
1.54 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
using NCC.Dependency;
using System;
using System.Reflection;
using System.Security.Cryptography;
using System.Text;
namespace NCC.DataEncryption
{
/// <summary>
/// MD5 加密
/// </summary>
[SuppressSniffer]
public static unsafe class MD5Encryption
{
/// <summary>
/// 字符串 MD5 比较
/// </summary>
/// <param name="text">加密文本</param>
/// <param name="hash">MD5 字符串</param>
/// <param name="uppercase">是否输出大写加密,默认 false</param>
/// <returns>bool</returns>
public static bool Compare(string text, string hash, bool uppercase = false)
{
var hashOfInput = Encrypt(text, uppercase);
return hash.Equals(hashOfInput, StringComparison.OrdinalIgnoreCase);
}
/// <summary>
/// MD5 加密
/// </summary>
/// <param name="text">加密文本</param>
/// <param name="uppercase">是否输出大写加密,默认 false</param>
/// <returns></returns>
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();
}
}
}