サイズがnのバッファがあります(サイズが非常に大きいため、インデックスのオーバーフローは発生しません)。私は、バッファの最初の16バイトをハッシュし、次の16バイトをハッシュするためにバッファ内の次の位置としてハッシュ結果を使用したいとします。JavaScriptを数値に変換する
var newLocation = crypto.createHash("sha256").update(buf.slice(0, 16)).digest()
newLocationが実際にバッファタイプである:これは、コードの私の最初の行です。私はbuf.slice(index, 16)
にジャンプできるインデックス番号に変換する方法を知りたいですか?
ハッシュ値をNビットの数値にマップすることは可能ですか?Nは変わる可能性がありますか?たとえば、256ビットのインデックスが必要な場合は、newLocationから直接変換できますか?ありがとう。 – Luke
16 Bytesは、ハッシュ関数への入力としてのデータの長さです。ハッシュ値の長さは256ビットで、32バイトです。私はダイジェスト( 'バイナリ')を使うと256ビットのバイナリ文字列が得られると思う。しかし、Nが変わる可能性のあるNビット数にハッシュ値をマップすることは可能でしょうか?たとえば、128ビットまたは512ビットのインデックスが必要な場合は、newLocationから直接変換できますか?ありがとう。 – Luke
@LuqinWang可能ですが、Nが16より大きい場合、Nビットの数値は非常に大きいかもしれません。256だけではありません。この数値を配列のインデックスとして使用することを考慮すると、この配列は非常に可能ですあなたのメモリ容量よりも大きい。なぜ私はあなたがそれをしたいのか分かりません。 – Quarter2Twelve