n numaralı arabellek var (çok büyük olduğunu ve dizin taşması olmayacağını varsayalım). Tamponun ilk 16 baytını karıştırmak ve bir sonraki sonraki 16 baytlık hash için bir sonraki konum olarak karma sonucunu kullanmak istiyorum, vb.javascript bir sayıya dönüştürün arabellek
var newLocation = crypto.createHash("sha256").update(buf.slice(0, 16)).digest()
newLocation aslında bir tampon türüdür: Bu kodun ilk çizgidir. buf.slice(index, 16)
'a atlayabileceğim bir dizin numarasına nasıl dönüştürebileceğimi bilmek istiyorum.
Karma değeri, N'nin değişebileceği bir N-bit sayısına eşleştirebilmem mümkün mü? Örneğin, 256 bitlik bir dizin istiyorsam, doğrudan yeni konumdan dönüşebilir miyim? Teşekkürler. – Luke
16 Bayt, karma işlevine bir girdi olarak verilerin uzunluğudur. Karma değerinin uzunluğu, 32 Bayt olan 256 bittir. Sanırım kullanım sindirimi ('ikili') 256 bitlik bir ikili dizeye neden olur. Bununla birlikte, hash değerini N'nin değişebileceği bir N-bit sayısına eşleştirmem mümkün mü? Örneğin, 128 bit veya 512 bitlik bir dizin istiyorsam, doğrudan yeni konumdan dönüşebilir miyim? Teşekkürler. – Luke
@LuqinWang N, 16'dan büyükse 256'dan büyük olduğunda N-bit sayısı çok büyük olabilir. Bu sayıyı bir dizinin dizini olarak kullanacağınız düşünüldüğünde, bu dizinin hafıza kapasitenizden daha büyük. Bunu neden yapmak istediğini gerçekten bilmiyorum. – Quarter2Twelve