上午刚用百度翻译百度 api 文档做了个网站https://a-pi.win,发现 api 认证问题: 以下是 sign 的生成方法
生成 sign :
>拼接字符串 1
拼接 appid=2015063000000001+q=apple+salt=1435660288+密钥=12345678
得到字符串 1 =2015063000000001apple143566028812345678
>计算签名 sign (对字符串 1 做 md5 加密,注意计算 md5 之前,串 1 必须为 UTF-8 编码)
sign=md5(2015063000000001apple143566028812345678)
sign=f89f9594663708c1605f3d736d01d2d4
我觉得 sign 是经过 md5 哈希的,所以 sign 是没有规律的,所以用 6 个 6 的 sign(f379eaf3c831b04de153469d1bec345e)代替 sign ,竟然失败了(提示 Invalid Sign),我想问一下 sign 为什么要这样设计,为什么 6 个 6 的就不行?
1
UnisandK 2016-08-27 22:54:29 +08:00 1
为什么 6 个 6 的就应该可以? sign 随便生成都行那这个参数的意义在哪里
|
2
qqmishi 2016-08-27 23:12:14 +08:00 via Android 1
你算一遍,百度也要根据你发的数据算一遍,对得上才行,随便写都能过就失去意义了
|
3
haozibi OP @UnisandK sign 是经过 md5 哈希的,他怎么确认 sign 的准确性, md5 后的 sign 和 6 个 6 能看出区别?
|
4
haozibi OP @qqmishi 刚刚准备反驳你的时候突然明白了,传的参数有很多,除了百度分发的密钥,我把 md5 需要的参数都通过 get 或者 post 传给百度了,百度拥有密钥,百度通过同样的算法进行运算并与 md5 后的 sign 进行对比确认我传输的密钥,从而避免应用被别人抓包获得我的密钥
|
5
ranran 2016-08-28 00:08:40 +08:00 1
楼主问出了我十年前的疑惑。
如果密码用 MD5 “加密”存在数据库,那么如何验证用户输入的密码? 哈哈哈哈哈哈 |
6
noe132 2016-08-28 00:41:39 +08:00 1
狐吧基佬你好
|
8
RangerWolf 2016-08-28 17:39:25 +08:00 1
试了一下,好像太慢了~~~
|
9
haozibi OP @RangerWolf 弄着玩的,放在搬瓦工上~
|