我在ruby上有这个方法,它将字符串转换为加密的SHA代码,我想知道是否有可能使用javascript实现这一点? 事实是我不确切知道这个SHA的配置是什么(我相信它是512但我不确定,我试过few javascript online tools但我无法达到相同的结果)
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';
}
答案 0 :(得分:2)
您获得不同结果的原因是因为Ruby代码将'testing'
转换为UTF-16,而jsSHA示例使用ASCII。如果将“testing”扩展为16位Unicode,则以十六进制获得"740065007300740069006e006700"
,这给出了与Ruby相同的答案。当然,您还需要像上面提到的那样将它设置为SHA-512。