百度翻译 api 签名问题

2016-08-27 22:20:41 +08:00
 haozibi

上午刚用百度翻译百度 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 的就不行?

2606 次点击
所在节点    问与答
9 条回复
UnisandK
2016-08-27 22:54:29 +08:00
为什么 6 个 6 的就应该可以? sign 随便生成都行那这个参数的意义在哪里
qqmishi
2016-08-27 23:12:14 +08:00
你算一遍,百度也要根据你发的数据算一遍,对得上才行,随便写都能过就失去意义了
haozibi
2016-08-27 23:13:30 +08:00
@UnisandK sign 是经过 md5 哈希的,他怎么确认 sign 的准确性, md5 后的 sign 和 6 个 6 能看出区别?
haozibi
2016-08-27 23:21:10 +08:00
@qqmishi 刚刚准备反驳你的时候突然明白了,传的参数有很多,除了百度分发的密钥,我把 md5 需要的参数都通过 get 或者 post 传给百度了,百度拥有密钥,百度通过同样的算法进行运算并与 md5 后的 sign 进行对比确认我传输的密钥,从而避免应用被别人抓包获得我的密钥
ranran
2016-08-28 00:08:40 +08:00
楼主问出了我十年前的疑惑。

如果密码用 MD5 “加密”存在数据库,那么如何验证用户输入的密码?

哈哈哈哈哈哈
noe132
2016-08-28 00:41:39 +08:00
狐吧基佬你好
haozibi
2016-08-28 08:50:29 +08:00
RangerWolf
2016-08-28 17:39:25 +08:00
试了一下,好像太慢了~~~
haozibi
2016-08-28 19:30:55 +08:00
@RangerWolf 弄着玩的,放在搬瓦工上~

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/302190

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX