Exemplo n.º 1
0
        public CommonParamModel Sign(List <string> paramArr)
        {
            CommonParamModel commonParam = new CommonParamModel();
            string           key         = System.Configuration.ConfigurationManager.AppSettings["WS_Pass"];

            commonParam.timestamp = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss");
            string str = string.Format("timestamp={0}&key={1}", commonParam.timestamp, key);
            //MD5加密
            var md5 = MD5.Create();
            var bs  = md5.ComputeHash(Encoding.UTF8.GetBytes(str));
            var sb  = new StringBuilder();

            foreach (byte b in bs)
            {
                sb.Append(b.ToString("x2"));
            }
            string newvalue = sb.ToString().ToUpper();

            newvalue = newvalue.Substring(newvalue.Length - 1, 1) + newvalue.Substring(1, newvalue.Length - 2) + newvalue.Substring(0, 1);
            var           token   = commonParam.token = newvalue;
            StringBuilder sbvalue = new StringBuilder();

            sbvalue.AppendFormat("token={0}", token);
            for (int i = 0; i < paramArr.Count; i++)
            {
                sbvalue.AppendFormat("&{0}", paramArr[i]);
            }
            //if (sbvalue.ToString().IndexOf("from=miniprogram") >= 0 && sbvalue.ToString().IndexOf("[{") >= 0) //针对小程序特殊处理
            //    return true;
            //MD5加密
            var bs2 = md5.ComputeHash(Encoding.UTF8.GetBytes(sbvalue.ToString()));
            var sb2 = new StringBuilder();

            foreach (byte b in bs2)
            {
                sb2.Append(b.ToString("x2"));
            }
            string newvalue2 = sb2.ToString().ToUpper();

            newvalue2        = newvalue2.Substring(newvalue2.Length - 1, 1) + newvalue2.Substring(1, newvalue2.Length - 2) + newvalue2.Substring(0, 1);
            commonParam.sign = newvalue2;
            return(commonParam);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 验证签名
        /// </summary>
        /// <param name="actionArguments"></param>
        /// <returns></returns>
        public bool Verify(Dictionary <string, object> actionArguments)
        {
            object paramObj = actionArguments.Values.FirstOrDefault();

            if (paramObj == null)
            {
                return(false);
            }
            var prop = paramObj.GetType().GetProperties();
            CommonParamModel common = prop[1].GetValue(paramObj) as CommonParamModel;

            if (common == null)
            {
                return(false);
            }
            object data = prop[0].GetValue(paramObj);
            var    type = data.GetType();

            if (type.IsPrimitive || type.Name.Equals("String"))
            {
                return(Verify(common.timestamp, common.token, common.sign, data.ToString()));
            }
            if (type.Name.Equals("JObject"))
            {
                var jobj   = data as JObject;
                var strArr = new List <string>();
                foreach (var item in jobj)
                {
                    strArr.Add(item.Value.ToString());
                }
                return(Verify(common.timestamp, common.token, common.sign, strArr.ToArray()));
            }
            var paramArr = type.GetProperties().Select(a => a.GetValue(data)?.ToString()).ToArray();

            return(Verify(common.timestamp, common.token, common.sign, paramArr));
        }