hash函式的主要應用有哪些,什麼是雜湊演算法,雜湊函式主要有哪些?

2021-05-14 10:35:02 字數 4448 閱讀 4400

1樓:匿名使用者

hash演算法在資訊保安方面的應用主要體現在以下的3個方面:

1)檔案校驗

我們比較熟悉的校驗演算法有奇偶校驗和crc校驗,這2種校驗並沒有抗資料篡改的能力,它們一定程度上能檢測並糾正資料傳輸中的通道誤碼,但卻不能防止對資料的惡意破壞。

md5 hash演算法的"數字指紋"特性,使它成為目前應用最廣泛的一種檔案完整性校驗和(checksum)演算法,不少unix系統有提供計算md5 checksum的命令。

2)數字簽名

hash 演算法也是現代密碼體系中的一個重要組成部分。由於非對稱演算法的運算速度較慢,所以在數字簽名協議中,單向雜湊函式扮演了一個重要的角色。對 hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對檔案本身進行數字簽名是等效的。

而且這樣的協議還有其他的優點。

3)鑑權協議

如下的鑑權協議又被稱作"挑戰--認證模式:在傳輸通道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。

什麼是雜湊演算法,雜湊函式主要有哪些?

2樓:半神_禹

額。。lz是不是看了**繪的終極解密啊?

我也蠻感興趣滴。。嘿嘿,

雜湊函式是一般的線性表,樹中,記錄在結構中的相對位置是隨機的,即和記錄的關鍵字之間不存在確定的關係。

將資料元素的關鍵字k作為自變數,通過一定的函式關係(稱為雜湊函式),計算出的值,即為該元素的儲存地址。表示為:

addr = h(key)

為此在建立一個雜湊表之前需要解決兩個主要問題:

⑴構造一個合適的雜湊函式

均勻性 h(key)的值均勻分佈在雜湊表中;

簡單 以提高地址計算的速度

⑵衝突的處理

衝突:在雜湊表中,不同的關鍵字值對應到同一個儲存位置的現象。即關鍵字k1≠k2,但h(k1)= h(k2)。

均勻的雜湊函式可以減少衝突,但不能避免衝突。發生衝突後,必須解決;也即必須尋找下一個可用地址。  無論雜湊函式設計有多麼精細,都會產生衝突現象,也就是2個關鍵字處理函式的結果對映在了同一位置上,因此,有一些方法可以避免衝突。

1.拉鍊

拉出一個動態連結串列代替靜態順序儲存結構,可以避免雜湊函式的衝突,不過缺點就是連結串列的設計過於麻煩,增加了程式設計複雜度。此法可以完全避免雜湊函式的衝突。

2.多雜湊法

設計二種甚至多種雜湊函式,可以避免衝突,但是衝突機率還是有的,函式設計的越好或越多都可以將機率降到最低(除非人品太差,否則幾乎不可能衝突)。

3.開放地址法

開放地址法有一個公式:hi=(h(key)+di) mod m i=1,2,...,k(k<=m-1)

其中,m為雜湊表的表長。di 是產生衝突的時候的增量序列。如果di值可能為1,2,3,...m-1,稱線性探測再雜湊。

如果di取1,則每次衝突之後,向後移動1個位置.如果di取值可能為1,-1,2,-2,4,-4,9,-9,16,-16,...k*k,-k*k(k<=m/2)

稱二次探測再雜湊。如果di取值可能為偽隨機數列。稱偽隨機探測再雜湊。

4.建域法

假設雜湊函式的值域為[0,m-1],則設向量hashtable[0..m-1]為基本表,另外設立儲存空間向量overtable[0..v]用以儲存發生衝突的記錄。

lz先把自己現階段的函式搞定,會慢慢接觸高等的函式滴,感覺蠻刺激的。。

hash函式的程式實現

3樓:手機使用者

// 說明:hash函式(即雜湊函式)在程式設計中的應用目標 ------ 把一個物件通過某種轉換機制對應到一個

//size_t型別(即unsigned long)的整型值。

// 而應用hash函式的領域主要是 hash表(應用非常廣)、密碼等領域。

// 實現說明:

// ⑴、這裡使用了函式物件以及泛型技術,使得對所有型別的物件(關鍵字)都適用。

// ⑵、常用型別有對應的偏特化,比如string、char*、各種整形等。

// ⑶、版本可擴充套件,如果你對某種型別有特殊的需要,可以在後面實現專門化。

// ⑷、以下實現一般放在標頭檔案中,任何包含它的都可使用hash函式物件。

#include

using std::string;

inlinesize_thash_str(const char* s)

template

struct hash

;// 一般的物件,比如:vector< queue>;的物件,需要強制轉化

template < class key >

size_thash::operator () (const key& k) const

return res;

}// 偏特化

template<>

size_thash< string >::operator () (const string& str) const

typedef char* pchar;

template<>

size_thash::operator () (const pchar& s) const

typedef const char* pcchar;

template<>

size_thash::operator () (const pcchar& s) const

template<> size_t hash::operator () (const char& x) const

template<> size_t hash::operator () (const unsigned char& x) const

template<> size_t hash::operator () (const signed char& x) const

template<> size_t hash::operator () (const short& x) const

template<> size_t hash::operator () (const unsigned short& x) const

template<> size_t hash::operator () (const int& x) const

template<> size_t hash::operator () (const unsigned int& x) const

template<> size_t hash::operator () (const long& x) const

template<> size_t hash::operator () (const unsigned long& x) const

// 使用說明:

//// ⑴、使用時首先由於是泛型,所以要加上關鍵字型別。

//// ⑵、其次要有一個函式物件,可以臨時、區域性、全域性的,只要在作用域就可以。

//// ⑶、應用函式物件作用於對應型別的物件。

//----------------------- hash函式使用舉例 -------------------------

#include

#include

#include

using namespace std;

int main()

什麼是hash函式?hash函式在密碼學中有什麼作用

4樓:隨幹代和怡

hash,一般翻譯做"雜湊",也有直接音譯為"雜湊"的,就是把任意長度的輸入(又叫做預對映,

pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,而不可能從雜湊值來唯一的確定輸入值。簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。

hash主要用於資訊保安領域中加密演算法,他把一些不同長度的資訊轉化成雜亂的128位的編碼裡,叫做hash值.

也可以說,hash就是找到一種資料內容和資料存放地址之間的對映關係

hash演算法在資訊保安方面的應用主要體現在以下的3個方面:

1)檔案校驗

我們比較熟悉的校驗演算法有奇偶校驗和crc校驗,這2種校驗並沒有抗資料篡改的能力,它們一定程度上能檢測並糾正資料傳輸中的通道誤碼,但卻不能防止對資料的惡意破壞。

md5hash演算法的"數字指紋"特性,使它成為目前應用最廣泛的一種檔案完整性校驗和(checksum)演算法,不少unix系統有提供計算md5

checksum的命令。

2)數字簽名

hash

演算法也是現代密碼體系中的一個重要組成部分。由於非對稱演算法的運算速度較慢,所以在數字簽名協議中,單向雜湊函式扮演了一個重要的角色。

對hash

值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對檔案本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。

3)鑑權協議

如下的鑑權協議又被稱作"挑戰--認證模式:在傳輸通道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。

密碼學hash函式的安全性要求是有哪些

1 已知雜湊函式的輸出,要求它的輸入是困難的,即已知c hash m 求m是困難的。這表明函式應該具有單向性。2 已知m,計算hash m 是容易的。這表明函式應該具有快速性。3 已知,構造m2使hash m2 c1是困難的。這表明函式應該具有抗碰撞性。4 c hash m c的每一位元都與m的每一...

dsp晶片主要有哪些型號 主要應用場合是什麼

ti tms320vc54 55x 數字訊號 目前世界上應用最bai廣,影響力du 最大的就是zhiti公司的tms320系列的dsp晶片。daotms320系列dsp晶片分內為tms320c2xx系列 tms320c2x 4x系列 tms320c54x 55x系列和tms320c2xx系列。容 應...

線繞濾芯的主要應用領域有哪些,線繞濾芯應用行業有哪些?

線繞濾芯具有良好過濾效能的紡織纖維紗線精密纏繞在多孔骨架上精製而成的。其紗線材料有丙綸纖維 晴綸纖維 脫脂棉纖維等。纏繞時通過控制紗線的纏繞鬆緊度和稀密度,可以製成不同精度的過濾芯。作用 線繞濾芯能有效除去液體中懸浮物,微粒等。流量大,壓力損失小。濾渣負荷高,使用壽命長。可以承受較高的過濾壓力。根據...