4

http://jssha.sourceforge.net/で得たのと同じ結果を得ようとしています

どこ

問題の「テスト」という言葉があります。

var word = 'testing';
var hex = toHex(word); // '740065007300740069006e006700';

jsshainput typeで、変数の値と SHA-512 を使用して HEX として選択するhexと、次の結果が得られます。

6e42b2c2a6351036b78384212774135d99d849da3066264983e495b5f74dc922e3d361b8ea9c8527169757233ed0bd4e56b2c42aab0a21bbcca67219dc53b472

nodejs crypto moduleで同じ結果を達成することはできませんが。

require('crypto').createHash('sha512').update(hex).digest('hex')

出力:

9ad6d9053c6c420fe61ec2fffd094e3a325bc71708e18232fd764a5eb30315e38464e620ef0b55b92fbf6c809838652a72d9412b0398b28d61ca432962451de2

では、暗号モジュールを使用してjsshaと同じ結果を得るにはどうすればよいでしょうか?

ありがとう

4

1 に答える 1

4

ほぼ標準のutf8を使用する場合、16進数の「テスト」は74657374696e67です。toHex メソッドが返すものは、utf16 を想定しています。

そのハッシュについて、ウェブサイトは次のように述べています。

521b9ccefbcd14d179e7a1bb877752870a6d620938b28a66a107eac6e6805b9d0989f45b5730508041aa5e710847d439ea74cd312c9355f1f2dae08d40e41d50

node.js でこれを実行して、16 進文字列をハッシュします。

require('crypto').createHash('sha512').update(
  new Buffer("74657374696e67", "hex")
).digest('hex')

ノードは同じハッシュを提供します。ああ、これでも同じハッシュが得られます。

require('crypto').createHash('sha512').update("testing").digest('hex')
于 2011-10-31T16:53:41.960 に答える