HMAC SHA256-将服务器端Ruby代码转换为客户端Javascript代码

时间:2019-01-07 06:45:20

标签: javascript ruby cryptography sha256 hmac

我想将服务器上运行的现有Ruby函数转换为可在客户端浏览器中运行的Javascript代码。

该函数通过导入参数数组和键来创建SHA256签名。

这是Ruby函数:

def params_with_signature(params, secret)
  params = params.reject { |_k, v| v.nil? }
  query_string = URI.encode_www_form(params)
  signature = OpenSSL::HMAC.hexdigest(OpenSSL::Digest.new('sha256'), secret, query_string)
  params = params.merge(signature: signature)
end

以下是通过Ruby函数传递的数据:

secret = 'abcdef'

params = {
  one: 'a',
  two: 'b',
  three: 'c'
}

puts params_with_signature(params, secret)

我在Forge项目中使用标准的sha256(无HMAC)取得了一些进展:

<script src='https://cdn.jsdelivr.net/npm/node-forge@0.7.0/dist/forge.min.js'></script>
<script>
  var string = 'The quick brown fox jumps over the lazy dog';
  var md = forge.md.sha256.create();
  md.update(string);
  hashed_string = (md.digest().toHex());
  console.log(hashed_string)
</script>

似乎确实有一个HMAC模块,但是我对Javascript不够熟悉,无法实现(https://github.com/digitalbazaar/forge#hmac)。

最重要的是,我希望所有这些都可以在客户端设备上运行。我不希望不使用node.js这样做,因为我知道它也可以在服务器上运行。

谢谢!

0 个答案:

没有答案