zoukankan      html  css  js  c++  java
  • 微信开发之c#下jssdk签名生成

    参考文章 :微信JS-SDK 权限签名算法 C#版

    这篇文章讲解的的比较详细,而且算法准确,但是这篇文章有几个错误的地方需要注意;

    url必须动态生成

    url不能写死,否则就算结果和官方检测的一致,也只会是无效的

    1  string url = Request.Url.ToString();

    noncestr必须动态生成

    noncestr也是动态获取的,不能写死

     1      ///<summary>
     2         ///生成随机字符串 
     3         ///</summary>
     4         ///<param name="length">目标字符串的长度</param>
     5         ///<param name="useNum">是否包含数字,1=包含,默认为包含</param>
     6         ///<param name="useLow">是否包含小写字母,1=包含,默认为包含</param>
     7         ///<param name="useUpp">是否包含大写字母,1=包含,默认为包含</param>
     8         ///<param name="useSpe">是否包含特殊字符,1=包含,默认为不包含</param>
     9         ///<param name="custom">要包含的自定义字符,直接输入要包含的字符列表</param>
    10         ///<returns>指定长度的随机字符串</returns>
    11         public static string GetRandomString(int length, bool useNum, bool useLow, bool useUpp, bool useSpe, string custom)
    12         {
    13             byte[] b = new byte[4];
    14             new System.Security.Cryptography.RNGCryptoServiceProvider().GetBytes(b);
    15             Random r = new Random(BitConverter.ToInt32(b, 0));
    16             string s = null, str = custom;
    17             if (useNum == true) { str += "0123456789"; }
    18             if (useLow == true) { str += "abcdefghijklmnopqrstuvwxyz"; }
    19             if (useUpp == true) { str += "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; }
    20             if (useSpe == true) { str += "!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~"; }
    21             for (int i = 0; i < length; i++)
    22             {
    23                 s += str.Substring(r.Next(0, str.Length - 1), 1);
    24             }
    25             return s;
    26         }

    官方给取的例子长度为16,含大小写和数字,没有特殊字符串

      var noncestr = GetRandomString(16, true, true, true, false,"");

     

  • 相关阅读:
    css之选择器及性能优化
    css之font
    css之background
    Oracle 学习笔记(十)
    数据库脚本开发日志模板 —— 项目需求 A
    Java 程序动态替换 docx 模板中定制值的实现例子
    Quartz 定时器 Cron 表达式 怎么破?
    Tomcat 启动报错;ERROR: transport error 202: bind failed: Address already in use
    Oracle 学习笔记(九)
    Oracle 学习笔记(八)
  • 原文地址:https://www.cnblogs.com/banluduxing/p/6383950.html
Copyright © 2011-2022 走看看