常用签名串生成 帮助类
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);elseret = Convert.ToInt64(ts.TotalMilliseconds);return ret;}public static string Sha1(string str){//引用System.Security。//建立SHA1对象baiSHA1 sha = new SHA1CryptoServiceProvider();//将mystr转换成byte[]byte[] dataToHash = Encoding.UTF8.GetBytes(str);//Hash运算dubyte[] dataHashed = sha.ComputeHash(dataToHash);//将运算结果转zhi换成stringstring hash = BitConverter.ToString(dataHashed).Replace("-", "").ToLower();return hash;}}