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

2021-03-05 09:21:33 字數 7157 閱讀 8516

1樓:清風魄影

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

hash主要用於資訊保安領域中加密演算法,他把一些不同長度的資訊轉化成雜亂的128位的編碼裡,叫做hash值. 也可以說,hash就是找到一種資料內容和資料存放地址之間的對映關係

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

1) 檔案校驗

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

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

2) 數字簽名

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

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

3) 鑑權協議

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

2樓:匿名使用者

hash函式頁稱雜湊函式 雜湊函式 雜湊函式,是一個從訊息空間到像空間的不可逆對映。作用:數字簽名,生成程式或文件的「數字指紋」,用於安全傳輸和儲存口令!

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

3樓:隨幹代和怡

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

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

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

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

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

1)檔案校驗

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

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

checksum的命令。

2)數字簽名

hash

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

對hash

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

3)鑑權協議

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

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

4樓:匿名使用者

hash,一般翻譯做"雜湊",也有直接音譯為"雜湊"的,就是把任意長度的輸入(又叫做預對映, pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。

密碼學上的hash函式應滿足哪些基本要求?

5樓:匿名使用者

一般的hash函式都需要儘量滿足以下三點性質:

1.抗原像:已知y屬於y,要找出x屬於x,使得h(x)=y是困難的;

2.抗第二原像(弱抗碰撞):已知x屬於x, 找出x'屬於x,使得h(x')=h(x)是困難的;

3.抗碰撞(強抗碰撞):找出x,x'屬於x,使得h(x)=h(x')是困難的;

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

6樓:手指の方向

1、已知雜湊函式的輸出,要求它的輸入是困難的,即已知c=hash(m),求m是困難的。這表明函式應該具有單向性。

2、已知m,計算hash(m)是容易的。這表明函式應該具有快速性。

3、已知,構造m2使hash(m2)=c1是困難的。這表明函式應該具有抗碰撞性。

4、c=hash(m),c的每一位元都與m的每一位元有關,並有高度敏感性。即每改變m的一位元,都將對c產生明顯影響。這表明函式應該具有雪崩性。

5、作為一種數字簽名,還要求雜湊函式除了資訊m自身之外,應該基於發信方的祕密資訊對資訊m進行確認。

6、接受的輸入m資料沒有長度限制;對輸入任何長度的m資料能夠生成該輸入報文固定長度的輸出。

hash()函式是做什麼用處的

7樓:匿名使用者

hash,一般翻譯做"雜湊",也有直接音譯為"雜湊"的,就是把任意長度的輸入(又叫做預對映, pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。

什麼是hash函式

8樓:小小米

hash函式是把任意長度的輸入(又叫做預對映pre-image)通過雜湊演算法變換成固定長度的輸出,該輸出就是雜湊值。

這種轉換是一種壓縮對映,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,所以不可能從雜湊值來確定唯一的輸入值。

hash函式可以將一個資料轉換為一個標誌,這個標誌和源資料的每一個位元組都有十分緊密的關係。hash演算法還具有一個特點,就是很難找到逆向規律。

9樓:豔陽高照的午後

hash函式:

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

演算法用途:

hash主要用於資訊保安領域中加密演算法,它把一些不同長度的資訊轉化成雜亂的128位的編碼裡,叫做hash值. 也可以說,hash就是找到一種資料內容和資料存放地址之間的對映關係。hash演算法在資訊保安方面的應用主要體現在以下的3個方面:

1)檔案校驗

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

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

2)數字簽名

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

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

3)鑑權協議

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

10樓:匿名使用者

hash函式  hash,一般翻譯做"雜湊",也有直接音譯為"雜湊"的,就是把任意長度的輸入(又叫做預對映, pre-image),通過雜湊演算法,變換成固定長度的輸出,該輸出就是雜湊值。這種轉換是一種壓縮對映,也就是,雜湊值的空間通常遠小於輸入的空間,不同的輸入可能會雜湊成相同的輸出,而不可能從雜湊值來唯一的確定輸入值。

簡單的說就是一種將任意長度的訊息壓縮到某一固定長度的訊息摘要的函式。

hash主要用於資訊保安領域中加密演算法,他把一些不同長度的資訊轉化成雜亂的128位的編碼裡,叫做hash值. 也可以說,hash就是找到一種資料內容和資料存放地址之間的對映關係

瞭解了hash基本定義,就不能不提到一些著名的hash演算法,md5 和 sha1 可以說是目前應用最廣泛的hash演算法,而它們都是以 md4 為基礎設計的。那麼他們都是什麼意思呢?

這裡簡單說一下:

1) md4

md4(rfc 1320)是 mit 的 ronald l. rivest 在 1990 年設計的,md 是 message digest 的縮寫。它適用在32位字長的處理器上用高速軟體實現--它是基於 32 位運算元的位操作來實現的。

2) md5

md5(rfc 1321)是 rivest 於2023年對md4的改進版本。它對輸入仍以512位分組,其輸出是4個32位字的級聯,與 md4 相同。md5比md4來得複雜,並且速度較之要慢一點,但更安全,在抗分析和抗差分方面表現更好

3) sha1 及其他

sha1是由nist nsa設計為同dsa一起使用的,它對長度小於264的輸入,產生長度為160bit的雜湊值,因此抗窮舉(brute-force)性更好。sha-1 設計時基於和md4相同原理,並且模仿了該演算法。

那麼這些hash演算法到底有什麼用呢?

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

1) 檔案校驗

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

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

2) 數字簽名

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

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

3) 鑑權協議

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

hash函式在程式設計中的實現

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

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

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

// 實現說明:

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

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

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

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

#include

using std::string;

inline size_t hash_str( const char* s )

template

struct hash

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

template < class key >

size_t hash::operator () ( const key& k ) const

return res;

}// 偏特化

template<>

size_t hash< string >::operator () ( const string& str ) const

typedef char* pchar;

template<>

size_t hash::operator () ( const pchar& s ) const

typedef const char* pcchar;

template<>

size_t hash::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

// 使用說明:

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

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

// // (3)、應用函式物件作用於對應型別的物件。

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

#include

#include

#include

using namespace std;

int main()

函式的定義,函式的概念,什麼是函式

定義傳統 一般的,在一個變化過程中,有兩個變數 如果給定一個值,相應的就確定唯一的一個,那麼就稱是的函式,其中是自變數,是因變數,的取值範圍叫做這個函式的定義域,相應的取值範圍叫做函式的值域。近代設a,b是非空的集合,如果按照某種確定的對應關係f,使對於集合a中的任意一個元素x,在集合b中都有唯一確...

什麼是擬凹函式,什麼是凹函式,嚴格擬凹函式和擬凹函式

所謂擬凹函式來,就是相對座標橫源軸,影象裡沒有下凸現象的曲線。亦即對任意兩點x y屬於定義域,f ax 1 a y min f x f y 容易證明,若函式是擬凹的,當且僅當其定義域的所有上輪廓集 upper contour set 都是凸的。對於效用函式來說,偏好是凸的,當且僅當效用函式是擬凹的。...

分段函式是初等函式嗎,分段函式是初等函式嗎

不是初等函式的定義寫的很清楚呢1由基本初等函式和常數經過有限次的四則運算或者複合,得出的能用一個數學式子表達的函式。2但是分段函式的每一個分式都是初等函式。而整體不是初等函式。3基本初等函式在他們的定義域是連續的。4一切初等函式在其定義區間是連續的。不是,初等函式包括一次函式,二次函式,指數函式,對...