切换风格

默认Lavender Sky Flowers Wizard Snow Beige California City Dragon Black London Sunset glow Pink Cloud

7

主题

173

积分

0

精华

用户组 

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


易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

5

主题

413

积分

0

精华

用户组 

易积分
53
热心
0
好评
0
发表于 2021-9-26 20:11:24 | 显示全部楼层
不错                                   
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

45

主题

1278

积分

0

精华

用户组 

易积分
5081
热心
1
好评
1

活跃会员热心会员

发表于 2021-9-26 23:03:14 | 显示全部楼层
https://www.eruyi.cn/thread-11060-1-1.html  有效解决用户名问题
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

14

主题

324

积分

0

精华

用户组 

易积分
184
热心
0
好评
0
QQ
发表于 2022-6-16 13:58:49 | 显示全部楼层
兄弟,帮大忙了,但是
  1. 变量 处理1 为 文本型 = 子文本替换(BASE64编码(文本到字节(提交内容,"utf8")),"=","")
复制代码


这样更简单
易如意中文编程学习交流论坛有你更精彩~
回复

使用道具 举报

QQ|sitemap|免责声明|RGB颜色对照表|手机版|小黑屋| 易如意 - E4A中文编程学习交流论坛

GMT+8, 2024-6-3 11:28 , Processed in 0.040956 second(s), 34 queries .

Powered by Discuz! X3.4

© 2001-2018 eruyi.cn

返回顶部