常用签名串生成 帮助类

it2026-01-14  12

 常用签名串生成 帮助类

public class SignatureUtil { /// <summary> /// C#反射遍历对象属性 /// </summary> /// <typeparam name="T">对象类型</typeparam> /// <param name="model">对象</param> public static Dictionary<string, object> ForeachClassProperties<T>(T model) { Dictionary<string, object> dic = new Dictionary<string, object>(); Type t = model.GetType(); PropertyInfo[] PropertyList = t.GetProperties(); foreach (PropertyInfo item in PropertyList) { string name = item.Name; object value = item.GetValue(model, null); dic.Add(name, value); } return dic; } /// <summary> /// 对 Dictionary,按关键字ASCII码从小到大排序 /// </summary> /// <param name="paramsMap"></param> /// <returns></returns> public static List<KeyValuePair<string, string>> SortParam(Dictionary<string, string> paramsMap) { List<KeyValuePair<string, string>> paramsMaplist = paramsMap.ToList<KeyValuePair<string, string>>(); var vDic = (from objDic in paramsMaplist orderby objDic.Key ascending select objDic); List<KeyValuePair<string, string>> tmplist = new List<KeyValuePair<string, string>>(); foreach (KeyValuePair<string, string> kv in vDic) { string value = kv.Value; //if (value != null && value != "") { tmplist.Add(new KeyValuePair<string, string>(kv.Key, value)); } } return tmplist; } /// <summary> /// 生成签名串 /// </summary> /// <param name="myDictionary"></param> /// <param name="key"></param> /// <returns></returns> public static string Signature(List<KeyValuePair<string, string>> myDictionary) { StringBuilder stringBulider = new StringBuilder(); foreach (KeyValuePair<string, string> entry in myDictionary) { string value = entry.Value; if (value != null && value != "") { stringBulider.Append(entry.Key).Append("=").Append(value).Append("&"); } else { stringBulider.Append(entry.Key).Append("=").Append("null").Append("&"); } } string stringSignTemp = stringBulider.ToString(); if (stringSignTemp.EndsWith("&")) { stringSignTemp = stringSignTemp.Substring(0, stringSignTemp.Length - 1); } //Console.WriteLine(stringSignTemp); return Sha1(stringSignTemp); //return EncryptWithMD5(stringSignTemp).ToLower(); } /// <summary> /// 对签名串进行MD5运算(默认:32位MD5运算) /// </summary> /// <param name="source"></param> /// <returns></returns> public static string EncryptWithMD5(string source) { byte[] sor = Encoding.UTF8.GetBytes(source); System.Security.Cryptography.MD5 md5 = System.Security.Cryptography.MD5.Create(); byte[] result = md5.ComputeHash(sor); StringBuilder strbul = new StringBuilder(40); for (int i = 0; i < result.Length; i++) { strbul.Append(result[i].ToString("x2"));//加密结果"x2"结果为32位,"x3"结果为48位,"x4"结果为64位 } return strbul.ToString(); } /// <summary> /// 获取时间戳,为真时获取10位时间戳(Unix),为假时获取13位时间戳(JavaScript) /// </summary> /// <param name="bflag">.</param> /// <returns></returns> public static long GetTimeStamp(DateTime dt, bool bflag) { System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1)); // 当地时区 TimeSpan ts = dt - startTime; long ret = 0; if (bflag) ret = Convert.ToInt64(ts.TotalSeconds); else ret = Convert.ToInt64(ts.TotalMilliseconds); return ret; } public static string Sha1(string str) { //引用System.Security。 //建立SHA1对象bai SHA1 sha = new SHA1CryptoServiceProvider(); //将mystr转换成byte[] byte[] dataToHash = Encoding.UTF8.GetBytes(str); //Hash运算du byte[] dataHashed = sha.ComputeHash(dataToHash); //将运算结果转zhi换成string string hash = BitConverter.ToString(dataHashed).Replace("-", "").ToLower(); return hash; } }

 

最新回复(0)