将Ruby SHA转换为JavaScript

3
我有一个 Ruby 方法,可以将字符串转换为加密的 SHA 代码。我想知道是否可能使用 JavaScript 实现这一点?事实是我不确定这个 SHA 的配置是什么(我相信它是512位的,但我不确定,我尝试了几个 JavaScript 在线工具,但我无法获得相同的结果)。
require 'digest'
require 'iconv'
word = 'testing'
puts Digest::SHA2.new(512).hexdigest(Iconv.conv('UTF-16LE','ISO-8859-15', word))

#=> 6e42b2c2a6351036b78384212774135d99d849da3066264983e495b5f74dc922e3d361b8ea9c8527169757233ed0bd4e56b2c42aab0a21bbcca67219dc53b472

也许知道上述方法中使用的确切配置,我在JavaScript中会更容易找到它?谢谢提前。

如果有人需要将字符串转换为十六进制UTF-16的方法,这里是:

function toHex(str) {
    var group = [], i;

    for (i = 0; i < str.length; i += 1) {
        group.push(str.charCodeAt(i).toString(16));
    }

    return group.join('00') + '00';
}
1个回答

2
你得到不同的结果是因为Ruby代码将 'testing' 转换成了UTF-16,而jsSHA示例使用的是ASCII。如果你将“testing”扩展为16位Unicode,则会得到十六进制的"740065007300740069006e006700",这与Ruby给出的答案相同。当然,你还需要将其设置为SHA-512,就像你提到的那样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接