zoukankan      html  css  js  c++  java
  • 微信验证

    public class WXverifyController : Controller
        {
            public ActionResult WXverify()
            {
                Load();
                return View();
            }
    
            const string Token = "Aa123456";//你的token  
    
    
            protected void Load()
            {
                string postStr = "";
                if (Request.HttpMethod.ToLower() == "post")
                {
                    System.IO.Stream s = System.Web.HttpContext.Current.Request.InputStream;
                    byte[] b = new byte[s.Length];
                    s.Read(b, 0, (int)s.Length);
                    postStr = System.Text.Encoding.UTF8.GetString(b);
                    if (!string.IsNullOrEmpty(postStr))
                    {
                        //ResponseMsg(postStr);  
                        Response.Write(ResponseMsg(postStr));
                        Response.End();
                    }
                    //WriteLog("postStr:" + postStr);  
                }
                else
                {
                    Valid();
                }
            }
    
            public string ResponseMsg(string s)
            {
                return s;
            }
    
            /// <summary>  
            /// 验证微信签名  
            /// </summary>  
            /// * 将token、timestamp、nonce三个参数进行字典序排序  
            /// * 将三个参数字符串拼接成一个字符串进行sha1加密  
            /// * 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信。  
            /// <returns></returns>  
            private bool CheckSignature()
            {
                string signature = Request.QueryString["signature"].ToString();
                string timestamp = Request.QueryString["timestamp"].ToString();
                string nonce = Request.QueryString["nonce"].ToString();
                string[] ArrTmp = { Token, timestamp, nonce };
                Array.Sort(ArrTmp);     //字典排序  
                string tmpStr = string.Join("", ArrTmp);
                tmpStr = FormsAuthentication.HashPasswordForStoringInConfigFile(tmpStr, "SHA1");
                tmpStr = tmpStr.ToLower();
                if (tmpStr == signature)
                {
                    return true;
                }
                else
                {
                    return false;
                }
            }
    
    
            private void Valid()
            {
                string echoStr = Request.QueryString["echoStr"].ToString();
                if (CheckSignature())
                {
                    if (!string.IsNullOrEmpty(echoStr))
                    {
                        Response.Write(echoStr);
                        Response.End();
                    }
                }
            }
  • 相关阅读:
    [Python学习]Iterator 和 Generator的学习心得
    ubantu linux的bash shell初接触
    Linux-Ubuntu 启用root账户
    Ubuntu Linux系统三种方法添加本地软件库
    ASK,OOK,FSK的联系和区别
    spinlock一边连逻辑一边连控制器
    Cgroup与LXC简介
    关于 package.json 和 package-lock.json 文件说明
    ng build --aot 与 ng build --prod
    【Rxjs】
  • 原文地址:https://www.cnblogs.com/FH-cnblogs/p/3839940.html
Copyright © 2011-2022 走看看