2013-10-21 112 views
0

從C++標準中,散列函數std :: tr1 :: hash計算範圍是64位的散列值(糾正我,如果我錯了)。但出於好奇,是否有任何機制生成範圍大於64位的散列值。我的問題可能看起來很奇怪,因爲我們使用的整個內存在64位範圍內,但我想知道我們如何計算散列值(比方說)大小爲80位?指數大於64位的散列函數?

編輯:我的不好,我假設64位實現。

+0

您必須定義自己的哈希數類型(80位)和您自己的哈希函數。我不確定C++ 11在32位實現中提供了64位散列。還可以參考[密碼散列函數](http://en.wikipedia.org/wiki/Cryptographic_hash_function),如MD5或SHA1 –

+0

是加密散列函數完成這項工作,但不存在任何非加密散列函數(還有標準化)可以做這項工作嗎? – annunarcist

+0

你應該解釋爲什麼你想要大型哈希...爲什麼?請解釋爲什麼'size_t'哈希不符合您的需求! –

回答

3

在各種散列函數C++ 11(我想對應於 TR1)計算散列值成size_t,其中 取決於實現的尺寸(但將是一個32位的 構建32位64位版本爲64位)。如果你需要一個更大尺寸的 ,那麼你必須自己計算;你甚至可能需要定義一個更大的整數類型來支持 的計算。 (如果size_t只有64位,您不能返回80位哈希代碼 a size_t。)