using System; using System.Collections.Generic; using System.Security.Cryptography; using System.Text; namespace rySafe { /// /// MD5和SHA1操作类 /// public class MD5Sha1 { /// /// 获取MD5 /// /// /// 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(); } /// /// 获取MD5 /// /// /// 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(); } /// /// 获取SHA1 /// /// /// 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(); } /// /// 获取SHA1 /// /// /// 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(); } /// /// 获取HmacSHA1 /// /// /// /// 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(); } /// /// 获取SHA256 /// /// /// 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(); } /// /// 获取HmacSHA256 /// /// /// /// 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(); } /// /// 获取SHA224 /// /// /// 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; } /// /// 获取SHA512 /// /// /// 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(); } /// /// 获取HmacSHA512 /// /// /// /// 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(); } } }