RaUI/Source/MyDb/SafeCheck/MD5Sha1.cs

172 lines
5.9 KiB
C#
Raw Normal View History

2020-11-28 07:03:28 +00:00
using System;
using System.Collections.Generic;
using System.Security.Cryptography;
using System.Text;
namespace rySafe
{
/// <summary>
/// MD5和SHA1操作类
/// </summary>
public class MD5Sha1
{
/// <summary>
/// 获取MD5
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string GetMD5(string str)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in System.Security.Cryptography.MD5.Create().ComputeHash(Encoding.UTF8.GetBytes(str)))
{
sb.Append(b.ToString("X2"));
}
return sb.ToString().Trim();
}
/// <summary>
/// 获取MD5
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string GetMD5(byte[] str)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in System.Security.Cryptography.MD5.Create().ComputeHash(str))
{
sb.Append(b.ToString("X2"));
}
return sb.ToString().Trim();
}
/// <summary>
/// 获取SHA1
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string GetSHA1(string str)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in System.Security.Cryptography.SHA1.Create().ComputeHash(Encoding.UTF8.GetBytes(str)))
{
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
/// <summary>
/// 获取SHA1
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string GetSHA1(byte[] str)
{
StringBuilder sb = new StringBuilder();
foreach (byte b in System.Security.Cryptography.SHA1.Create().ComputeHash(str))
{
sb.Append(b.ToString("X2"));
}
return sb.ToString();
}
/// <summary>
/// 获取HmacSHA1
/// </summary>
/// <param name="data"></param>
/// <param name="pwd"></param>
/// <returns></returns>
public static string GetSHA1(string data, string pwd)
{
var myHMACSHA = new HMACSHA1(Encoding.UTF8.GetBytes(pwd));
byte[] hash = myHMACSHA.ComputeHash(Encoding.UTF8.GetBytes(data));
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
builder.Append(hash[i].ToString("X2"));
}
return builder.ToString();
}
/// <summary>
/// 获取SHA256
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string GetSHA256(string data)
{
byte[] bytes = Encoding.UTF8.GetBytes(data);
byte[] hash = SHA256Managed.Create().ComputeHash(bytes);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
builder.Append(hash[i].ToString("X2"));
}
return builder.ToString();
}
/// <summary>
/// 获取HmacSHA256
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string GetSHA256(string data, string pwd)
{
var myHMACSHA = new HMACSHA256(Encoding.UTF8.GetBytes(pwd));
byte[] hash = myHMACSHA.ComputeHash(Encoding.UTF8.GetBytes(data));
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
builder.Append(hash[i].ToString("X2"));
}
return builder.ToString();
}
/// <summary>
/// 获取SHA224
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public string GetSHA224(string str)
{
SHA256 sha = new SHA256Managed(); // 用来计算 SHA256 哈希值
UTF8Encoding uen = new UTF8Encoding(); // 用来把char[]转换成byte[]
byte[] bytestr = uen.GetBytes(str.ToCharArray());
sha.ComputeHash(bytestr); // 计算哈希值
String sha224 = "";
for (int i = 0; i < 28; ++i)
{
int dec = int.Parse(sha.Hash.GetValue(i).ToString()); // 十进制
String bin = Convert.ToString(dec, 2).PadLeft(8, '0'); // 转成二进制数是8位的不足8位前面补0
sha224 += bin;
}
return sha224;
}
/// <summary>
/// 获取SHA512
/// </summary>
/// <param name="data"></param>
/// <returns></returns>
public static string GetSHA512(string data)
{
byte[] bytes = Encoding.UTF8.GetBytes(data);
byte[] hash = SHA512.Create().ComputeHash(bytes);
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
builder.Append(hash[i].ToString("X2"));
}
return builder.ToString();
}
/// <summary>
/// 获取HmacSHA512
/// </summary>
/// <param name="data"></param>
/// <param name="pwd"></param>
/// <returns></returns>
public static string GetSHA512(string data, string pwd)
{
var myHMACSHA = new HMACSHA512(Encoding.UTF8.GetBytes(pwd));
byte[] hash = myHMACSHA.ComputeHash(Encoding.UTF8.GetBytes(data));
StringBuilder builder = new StringBuilder();
for (int i = 0; i < hash.Length; i++)
{
builder.Append(hash[i].ToString("X2"));
}
return builder.ToString();
}
}
}