/// <summary> /// 计算签名 /// </summary> /// <param name="timeStamp"></param> /// <param name="nonce"></param> /// <param name="staffId"></param> /// <param name="data"></param> /// <returns></returns> //private static string GetSignature(string timeStamp, string nonce, int staffId, string data) //{ // Token token = null; // var resultMsg = GetSignToken(staffId); // if (resultMsg != null) // { // if (resultMsg.StatusCode == 200) // { // token = resultMsg.Result; // } // else // { // throw new Exception(resultMsg.Info.ToString()); // } // } // else // { // throw new Exception("token为null,员工编号为:" + staffId); // } // var hash = System.Security.Cryptography.MD5.Create(); // //拼接签名数据 // var signStr = timeStamp + nonce + staffId + token.SignToken.ToString() + data; // //将字符串中字符按升序排序 // var sortStr = string.Concat(signStr.OrderBy(c => c)); // var bytes = Encoding.UTF8.GetBytes(sortStr); // //使用MD5加密 // var md5Val = hash.ComputeHash(bytes); // //把二进制转化为大写的十六进制 // StringBuilder result = new StringBuilder(); // foreach (var c in md5Val) // { // result.Append(c.ToString("X2")); // } // return result.ToString().ToUpper(); //} #endregion /// <summary> /// 生成签名 /// </summary> /// <param name="timeStamp">发起请求时的时间戳(单位:毫秒)</param> /// <param name="nonce">随机数</param> /// <param name="staffId">应用编号</param> /// <param name="token">token</param> public static string GetSignature(string timeStamp, string nonce, int staffId) { string _signToken = GetSignToken(staffId); string signature = timeStamp + nonce + +staffId + _signToken; string resultMsg = Md5.Md5Hash(signature); return(resultMsg); }
/// <summary> /// 加密数据 /// </summary> /// <param name="Text"></param> /// <param name="sKey"></param> /// <returns></returns> public static string Encrypt(string Text, string sKey) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); byte[] inputByteArray; inputByteArray = Encoding.Default.GetBytes(Text); des.Key = ASCIIEncoding.ASCII.GetBytes(Md5.Md5Hash(sKey).Substring(0, 8)); des.IV = ASCIIEncoding.ASCII.GetBytes(Md5.Md5Hash(sKey).Substring(0, 8)); System.IO.MemoryStream ms = new System.IO.MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateEncryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); StringBuilder ret = new StringBuilder(); foreach (byte b in ms.ToArray()) { ret.AppendFormat("{0:X2}", b); } return(ret.ToString()); }
/// <summary> /// 解密数据 /// </summary> /// <param name="Text"></param> /// <param name="sKey"></param> /// <returns></returns> public static string Decrypt(string Text, string sKey) { DESCryptoServiceProvider des = new DESCryptoServiceProvider(); int len; len = Text.Length / 2; byte[] inputByteArray = new byte[len]; int x, i; for (x = 0; x < len; x++) { i = Convert.ToInt32(Text.Substring(x * 2, 2), 16); inputByteArray[x] = (byte)i; } des.Key = ASCIIEncoding.ASCII.GetBytes(Md5.Md5Hash(sKey).Substring(0, 8)); des.IV = ASCIIEncoding.ASCII.GetBytes(Md5.Md5Hash(sKey).Substring(0, 8)); System.IO.MemoryStream ms = new System.IO.MemoryStream(); CryptoStream cs = new CryptoStream(ms, des.CreateDecryptor(), CryptoStreamMode.Write); cs.Write(inputByteArray, 0, inputByteArray.Length); cs.FlushFinalBlock(); return(Encoding.Default.GetString(ms.ToArray())); }