用户组
易积分2183
热心0
好评1
|
关于如意1.71post中文时的签名有误的解决办法[复制链接]
最近自己在写相关扩展的API,发现post参数一但有中文的存在就会返回签名有误
于是用BASE64把中文编码后再请求,发现时不时会出现签名有误,比如修改用户名的时候,输入【哈哈】来修改就可以,输入【哈哈1】就会报签名有误
经过对比和本地调试发现,发出的sign值和本地m5d值不一样,说明在问题出在参数上
顺带说一下,如意的sign加密方式:MD5(post所有参数加起来 + appkey)
- 发包:token=263d453596abe50568b2349ee912336f&name=MTExMTExMQ&t=1632630304
- MD5:2202fd1653491190b100ab4064c0069b
- 本地:token=263d453596abe50568b2349ee912336f&name=MTExMTExMQ==&t=1632630304
- MD5:85e4ab7bb8e07fb505fea29445b5508a
复制代码 对比是发现在BASE64的时候,本地比发包多了两个==,个人觉得应该是在发包函数里对请求参数做过处理,把==给处理了
所以只需要把BASE64过后的内容处理下就可以了,如果最后结尾是==,就删掉,具体处理代码如下:
- 静态 函数 处理BASE64编码(text 为 文本型) 为 文本型
- 变量 i 为 整数型
- 变量循环首 i=0 至 取文本长度(text)-1
- 如果 取文本右边(text,1) = "=" 则
- text = 子文本替换(text,"=","")
- 否则
- 退出
- 结束 如果
- 变量循环尾
- 处理BASE64编码 = 删尾空(text)
- 结束 函数
复制代码
|
|