无法在 Scala.js 中执行 HmacSHA256 哈希
Can't perform HmacSHA256 hashing in Scala.js
我正在尝试实现一种方法来计算和验证 verifying a slack request 的 HmacSHA256 签名。由于...各种原因...我正在使用 scala.js
,因此我无法访问通常的 javax.crypto
导入。
来自 slack 关于验证来自 Slack 的签名请求的文档:
- With the help of HMAC SHA256 implemented in your favorite programming, hash the above basestring, using the Slack Signing Secret
as the key.
- Compare this computed signature to the X-Slack-Signature header on the request.
嗯,第一步有问题。在 scala.js 中,javax.crypto
包不可用,因此以下内容不起作用:
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
def asHmacSHA256(key: String, baseString: String): Array[Byte] = {
val secretKeySpec = new SecretKeySpec(key.getBytes(), "HmacSHA256")
val hmac = Mac.getInstance("HmacSHA256")
hmac.init(secretKeySpec)
hmac.doFinal(baseString.getBytes())
}
我该如何解决这个问题 - 是否有适合 scala.js 的良好散列库,或者我是否必须引入一些 js
依赖项,或者我是否必须这样做。 .. gulp...推出我自己的哈希算法?
有一个项目倾向于这样做(不确定质量)https://github.com/fluencelabs/crypto。它在内部使用 CryptoJS(也许直接使用它会更简单或更稳定)。但是你仍然可以看到它是如何在 fluencelabs/crypto.
中使用的
我正在尝试实现一种方法来计算和验证 verifying a slack request 的 HmacSHA256 签名。由于...各种原因...我正在使用 scala.js
,因此我无法访问通常的 javax.crypto
导入。
来自 slack 关于验证来自 Slack 的签名请求的文档:
- With the help of HMAC SHA256 implemented in your favorite programming, hash the above basestring, using the Slack Signing Secret as the key.
- Compare this computed signature to the X-Slack-Signature header on the request.
嗯,第一步有问题。在 scala.js 中,javax.crypto
包不可用,因此以下内容不起作用:
import javax.crypto.Mac
import javax.crypto.spec.SecretKeySpec
def asHmacSHA256(key: String, baseString: String): Array[Byte] = {
val secretKeySpec = new SecretKeySpec(key.getBytes(), "HmacSHA256")
val hmac = Mac.getInstance("HmacSHA256")
hmac.init(secretKeySpec)
hmac.doFinal(baseString.getBytes())
}
我该如何解决这个问题 - 是否有适合 scala.js 的良好散列库,或者我是否必须引入一些 js
依赖项,或者我是否必须这样做。 .. gulp...推出我自己的哈希算法?
有一个项目倾向于这样做(不确定质量)https://github.com/fluencelabs/crypto。它在内部使用 CryptoJS(也许直接使用它会更简单或更稳定)。但是你仍然可以看到它是如何在 fluencelabs/crypto.
中使用的