关于如意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)
结束 函数
不错 https://www.eruyi.cn/thread-11060-1-1.html有效解决用户名问题 兄弟,帮大忙了,但是
变量 处理1 为 文本型 = 子文本替换(BASE64编码(文本到字节(提交内容,"utf8")),"=","")
这样更简单 可以可以666666666
页:
[1]