微信开发之c#下jssdk签名生成

Posted 半路独行

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信开发之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 += "!\"#$%&‘()*+,-./:;<=>[email protected][\\]^_`{|}~"; }
21             for (int i = 0; i < 16; 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,"");

 

 

 

以上是关于微信开发之c#下jssdk签名生成的主要内容,如果未能解决你的问题,请参考以下文章

企业微信系列之JSSDK使用权限签名对接

企业微信系列之JSSDK使用权限签名对接

微信jssdk踩坑—invalid signature

Java企业微信开发_08_JSSDK多图上传

微信jssdk图片语音开发记录

vue 微信jssdk中的url怎么写