3

文字列を暗号化されたSHAコードに変換するこのメソッドがrubyにありますが、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で簡単に見つけることができますか?

前もって感謝します


文字列を16進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';
}
4

1 に答える 1

2

異なる結果が得られる理由は、Rubyコードが'testing'UTF-16に変換され、jsSHAの例ではASCIIが使用されているためです。「テスト」を16ビットUnicodeに拡張すると"740065007300740069006e006700"、16進数になり、Rubyと同じ答えが得られます。もちろん、前述のようにSHA-512に設定する必要もあります。

于 2011-10-18T13:10:25.827 に答える