2011-10-18 3 views
3

文字列を暗号化されたSHAコードに変換するこのメソッドはRuby上にあり、javascriptを使用して実現できるかどうかを知りたいですか? 事実はRuby SHAをjavascriptに変換する

require 'digest' 
require 'iconv' 
word = 'testing' 
puts Digest::SHA2.new(512).hexdigest(Iconv.conv('UTF-16LE','ISO-8859-15', word)) 

#=> 6e42b2c2a6351036b78384212774135d99d849da3066264983e495b5f74dc922e3d361b8ea9c8527169757233ed0bd4e56b2c42aab0a21bbcca67219dc53b472 
(私は few javascript online toolsを試してみましたが、私は同じ結果を得ることができなかった、私はそれが512であると考えているが、私はわからない)私は、このSHAのための構成がされている内容を正確に把握していないということです

おそらく上記の方法で使用されている正確な設定が何であるかを知ることによって、私は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'; 
} 

答えて

2

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

+0

完璧!ありがとうマシュー、これはトリックでした! – zanona

関連する問題