2009-12-28 111 views
3

我只是想知道,是有一個原因一些圖書館(無論是任何語言)使用迭代散列使得散列數據以十六進制編碼,再改頭換面換湯不換藥實際的二進制輸出,而不是?迭代散列

回答

-1

這樣做是爲了引入一個額外的步驟,以防止該散列可能開始,如果它被迭代直接施加到相同的散列的結果以產生相同或相似的輸出。這個額外的步驟與哈希實現無關,並且本身充當另一個不會受傷的重新哈希階段。這種預防措施對於可靠的哈希來說不是必需的 - 但是,如果某些哈希算法存在未知缺陷,您將永遠無法預知。

+0

等一下,你是說哈希算法不返回原始輸出,返回某種「散列」輸出?我認爲這不是事實。 AFAIK,大多數庫會將二進制數據轉換爲十六進制(編碼),或者單獨返回二進制數據。我沒有理由在這裏使用十六進制(基數爲16)而非二進制(基數爲2)。 – Tower 2009-12-28 13:35:34

+0

不,如果你有十六進制輸出,你可以將它轉換爲原始的,反之亦然。事實上,散列的輸出在重新散列之前會以某種方式進行轉換,可以提高安全性。關鍵不在於轉換本身,關鍵在於它在應用相同散列之前完成。 – sharptooth 2009-12-28 14:11:12

+0

當我想到這一遍又一遍,我看不到的方式映射0-255字節爲0-15個字節(而不是實際的字節,只是數量)和老調重彈它可以提高安全性如何。據我所知,它應該是相反的。與散列實際輸出相比,我們會通過再次對壓縮輸出進行散列來丟失熵。你能提供一些有關這方面的事實嗎?或者它只是在重新調整之前壓縮數據提高安全性的一種感覺? – Tower 2009-12-28 14:43:56