Mashery 允许通过数字签名进行身份验证,如下所示:
- 首先,连接以下组件:
- API key
- 共享 secret
- UNIX 时间戳
- 然后,创建连接字符串的 MD5 哈希值。
文档指出 unix 时间戳只需要 +/- 5 分钟的精度。详情:http://support.mashery.com/docs/read/mashery_api/20/Authentication .
假设这不是商业 secret ,执行这样的身份验证的算法是什么?
具体来说,unix 时间戳可以相差 5 分钟怎么可能?一种“蛮力”技术可能是为每个可能的时间戳值计算签名,直到找到匹配项(或不匹配项),但这对于验证频繁的 API 调用似乎并不实用。
最佳答案
是的,这似乎就是它的作用。您提供的文档链接指出,“Mashery 服务器上当前时间戳的任一侧都允许有五分钟的摆动,以允许合理的时钟漂移。”这意味着他们需要检查多达 600 个哈希值以查看提交的哈希值是否有效。 5 分钟是 300 秒。加上或减去 600 张支票。
我觉得很实用。 600 个 MD5 不需要做很多处理。事实上,现代密码验证器(比如使用 bcrypt 的东西)会执行更多的工作来验证密码。
关于algorithm - 由 Mashery 实现的 API 签名认证是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8042907/