求助,有没有对 JavaScript 和 Java 都熟悉的朋友,请教下这段 Java 代码的 JavaScript 的实现方式

2017-12-21 22:51:55 +08:00
 insomniowl
服务端用到了阿里云 API 网关,涉及到签名的计算,官方文档( https://help.aliyun.com/document_detail/29475.html )只看到了 Java 的实现方式:

Mac hmacSha256 = Mac.getInstance("HmacSHA256");
byte[] keyBytes = secret.getBytes("UTF-8");
hmacSha256.init(new SecretKeySpec(keyBytes, 0, keyBytes.length, "HmacSHA256"));
String sign = new String(Base64.encodeBase64(hmacSha256.doFinal(stringToSign.getBytes("UTF-8")),"UTF-8"));

想请教下如何用 JavaScript 实现得到相同的计算结果
4013 次点击
所在节点    JavaScript
8 条回复
wxsm
2017-12-21 22:55:07 +08:00
搞一个 java 微服务不就完了,还能解藕,一举两得。
jamesxu
2017-12-21 22:59:47 +08:00
翻到页面底部:在 API 网关控制台,调用 API — SDK 下载 处还有更多语种的调用 demo。
insomniowl
2017-12-21 23:10:12 +08:00
@jamesxu 这个之前也看到了,有 Node 的 SDK ( https://github.com/aliyun/api-gateway-nodejs-sdk ),但不知道前端 js 如何来实现。
viko16
2017-12-21 23:17:09 +08:00
涉及签名的就不要在浏览器端做了
insomniowl
2017-12-21 23:18:43 +08:00
@viko16 #4 小程序呢
wdlth
2017-12-21 23:25:29 +08:00
用 crypto-js 不行么?
insomniowl
2017-12-21 23:31:09 +08:00
@wdlth #6
base64.encode(cryptojs.HmacSHA256(stringToSign, secret))
得到的结果跟复制 Java 代码跑出来的结果并不一样,不知道问题出在哪里了..
openmynet
2017-12-22 00:09:23 +08:00

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

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

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

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

© 2021 V2EX