我是JavaScript的新手。我想玩Rest。这需要创建一个X密钥来进行身份验证。
文件上说:
X-8月键报头应该使用以下算法构造: md5(api_key + md5(url +X User+ api_key +X Expires))。
例如,考虑用户'admin‘使用api_key '1acpJN7oEDn3BDDYhQ’向GET请求,该请求将于2011年世界协调时6月1日到期。在这种情况下,url参数是'/live_events/1‘,而值是'1306886400’。因此,X-8月键的值应计算如下:
(‘1 acpJN7oEDn3BDDYhQ’+ md5('/live_events/1'+'admin'+'1acpJN7oEDn3BDDYhQ'+'1306886400')) => md5('1acpJN7oEDn3BDDYhQ‘+ md5('/live_events/1admin1acpJN7oEDn3BDDYhQ1306886400')) => '180c88df8d0d4182385f6eb7e7045a42’)
到目前为止,我尝试用CryptoJs实现这一点,但不幸的是,我无法获得示例的值:
<script>
var md5xx = CryptoJS.MD5('/live_events/1admin1acpJN7oEDn3BDDYhQ1306886400')
var md5yy = CryptoJS.MD5(('1acpJN7oEDn3BDDYhQ') + String(md5xx));
console.log(md5yy.toString());
// => 17222238c238b7ac9f76ea8d0fe1e330
</script>我真的很感激你的帮助!提前感谢!
发布于 2022-02-04 10:22:56
您获得的md5哈希( 17222238c238b7ac9f76ea8d0fe1e330 )是正确的。
使用反向查找的给定180c88df8d0d4182385f6eb7e7045a42示例提供了一个不同的链接/jobs/1admin1acpJN7oEDn3BDDYhQ1306886400,而不是/live_events/1admin1acpJN7oEDn3BDDYhQ1306886400。
你可以交叉检查
https://md5.gromweb.com/?md5=180c88df8d0d4182385f6eb7e7045a42和
https://md5.gromweb.com/?md5=a39ee4e3aa79939249cb6b5e7faead28
//the hash you actually expected
var md5xx = CryptoJS.MD5('/jobs/1admin1acpJN7oEDn3BDDYhQ1306886400')
var md5yy = CryptoJS.MD5(('1acpJN7oEDn3BDDYhQ') + String(md5xx));
console.log(md5yy.toString());
//correct hash according to the given link
var md5xx = CryptoJS.MD5('/live_events/1admin1acpJN7oEDn3BDDYhQ1306886400')
var md5yy = CryptoJS.MD5(('1acpJN7oEDn3BDDYhQ') + String(md5xx));
console.log(md5yy.toString());<script src="https://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.1.1/crypto-js.min.js"></script>
https://stackoverflow.com/questions/70984064
复制相似问题