using System; using System.ComponentModel; using System.Security.Cryptography; using System.Text; namespace APT.Infrastructure.Core { /// /// Hash工具类 /// public static class HashUtil { /// /// 计算字符串MD5值 /// /// 要计算的值 /// public static string GetMD5(string source) { byte[] bytes = Encoding.UTF8.GetBytes(source); return GetMD5(bytes); } /// /// 计算byte数组MD5值 /// /// 要计算的byte数组 /// public static string GetMD5(byte[] bytes) { StringBuilder builder = new StringBuilder(); MD5 hash = new MD5CryptoServiceProvider(); bytes = hash.ComputeHash(bytes); foreach (byte b in bytes) { builder.AppendFormat("{0:X2}", b); } return builder.ToString(); } /// /// 产生随机字串,可用来自动生成密码,默认长度8位16进制 /// /// 长度 /// 字串类型 0 字母 1 数字 2 大写字母 3 小写字母 4 十六进制字母 5 混合 /// 额外字符 /// public static string rand_string(int len = 8, RandomTypeEnum type = RandomTypeEnum.Hex, string addChars = "") { string chars = ""; switch (type) { case RandomTypeEnum.Alphabet: chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"+addChars; break; case RandomTypeEnum.Number: chars = "0123456789"; break; case RandomTypeEnum.Uppercase: chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"+addChars; break; case RandomTypeEnum.Lowercase: chars = "abcdefghijklmnopqrstuvwxyz"+ addChars; break; case RandomTypeEnum.Hex: chars = "0123456789ABCDEF"+addChars; break; default : // 默认去掉了容易混淆的字符oOLl和数字01,要添加请使用addChars参数 chars = "ABCDEFGHIJKMNPQRSTUVWXYZabcdefghijkmnpqrstuvwxyz23456789"+ addChars; break; } char[] constant = chars.ToCharArray(); System.Text.StringBuilder newRandom = new System.Text.StringBuilder(constant.Length); Random rd = new Random(); for (int i = 0; i < len; i++) { newRandom.Append(constant[rd.Next(constant.Length)]); } return newRandom.ToString(); } } /// /// 随机数类型 /// public enum RandomTypeEnum { [Description("字母")] Alphabet = 0, [Description("数字")] Number = 1, [Description("大写字母")] Uppercase = 2, [Description("小写字母")] Lowercase = 3, [Description("十六进制字母")] Hex = 4, [Description("混合")] Mix = 5 } }