密碼學哈希函數具有以下什麼特性
⑴ 密碼學上的Hash函數應滿足哪些基本要求
一般的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函數Hash函數在密碼學中有什麼作用
Hash,一般翻譯做"散列",也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。這種轉換是一種壓縮映射,也就是,散列值的空間通常遠小於輸入的空間,不同的輸入可能會散列成相同的輸出,而不可能從散列值來唯一的確定輸入值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。
HASH主要用於信息安全領域中加密演算法,他把一些不同長度的信息轉化成雜亂的128位的編碼里,叫做HASH值. 也可以說,hash就是找到一種數據內容和數據存放地址之間的映射關系
Hash演算法在信息安全方面的應用主要體現在以下的3個方面:
1) 文件校驗
我們比較熟悉的校驗演算法有奇偶校驗和CRC校驗,這2種校驗並沒有抗數據篡改的能力,它們一定程度上能檢測並糾正數據傳輸中的信道誤碼,但卻不能防止對數據的惡意破壞。
MD5 Hash演算法的"數字指紋"特性,使它成為目前應用最廣泛的一種文件完整性校驗和(Checksum)演算法,不少Unix系統有提供計算md5 checksum的命令。
2) 數字簽名
Hash 演算法也是現代密碼體系中的一個重要組成部分。由於非對稱演算法的運算速度較慢,所以在數字簽名協議中,單向散列函數扮演了一個重要的角色。 對 Hash 值,又稱"數字摘要"進行數字簽名,在統計上可以認為與對文件本身進行數字簽名是等效的。而且這樣的協議還有其他的優點。
3) 鑒權協議
如下的鑒權協議又被稱作"挑戰--認證模式:在傳輸信道是可被偵聽,但不可被篡改的情況下,這是一種簡單而安全的方法。
⑶ 哈希指針的特點
特點:
(1)加密過程不可逆,意味著我們無法通過輸出的哈希值倒推原本的明文是什麼。
(2)輸入的明文與輸出的哈希值一一對應,任何一個輸入信息的變化,都必將導致最終輸出的哈希值的變化。
(3)對於任意大小的輸入,最終計算出的哈希值的長度很小,並且是固定長度。
(4)兩段內容不同的明文,很難使得它們的哈希值相同。即對於任意兩個不同的數據塊,其哈希值相同的可能性極小。
1.概念
哈希:Hash,一般翻譯為「散列」,也有直接音譯為「哈希」的,就是把任意長度的輸入通過哈希演算法變換成固定長度的輸出,該輸出就是哈希值。簡單的說就是一種將任意長度的消息壓縮到某一固定長度的消息摘要的函數。我們常說的哈希演算法、哈希函數通常都是意指同一個東西。
2.原理
基於一種密碼學上的單向哈希函數,通常業界使用y =hash(x)的方式進行表示,該哈希函數實現對x進行運算計算出一個哈希值y。這種函數很容易被驗證,但是卻很難破解。由x很容易計算出y,但從y很難推導出x。也就是只有加密過程,沒有解密過程。
⑷ hash演算法的作用是什麼
身份驗證
數字簽名
⑸ 她任教山東大學,後被清華聘請,破解國際通用哈希函數而出名,她是誰呢
世界上,沒有永遠的戰爭,也沒有永遠的和平。戰爭與和平交替存在。沒有永遠的光明,也沒有永遠的黑夜,光明與黑暗相伴而生。有密碼牆,就是破裂密碼牆的計算方法。盡管沒有永遠足夠安全的密碼,但我們會一直進步。在中國有一位這樣女教授,她破解了世界上著名的通用哈希函數,就好比一個人赤手空拳,在一天之內造出一架飛機飛上天!讓我們來一起了解王小雲教授吧。
結語
王小雲從小有著比較良好的家庭影響,她繼承了父親對數理化的喜愛,在後來的日子裡也默默堅持,沉下心來去在自己熱愛的領域里勤學苦讀。脫離掉學術氛圍,王小雲也有著普通的愛好,她喜歡養一些鮮花,或者做簡單的家務都能讓她放鬆,另外,集郵也是王小雲的興趣愛好之一。
⑹ 密碼學HASH函數的安全性要求是有哪些
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函數在密碼學中有什麼作用
Hash,一般翻譯做"散列",也有直接音譯為"哈希"的,就是把任意長度的輸入(又叫做預映射, pre-image),通過散列演算法,變換成固定長度的輸出,該輸出就是散列值。
⑻ 緊急請教高手關於密碼學:什麼是強無碰撞Hash函數以及簡述密碼分析者常使用的幾種攻擊方式。
首先我不是學信息安全的,但是最近對密碼學感興趣,有時也在看
但是就「無強碰撞Hash函數」我還是知道的
比如對於一個<K,V>以string為K,如果你寫的hash函數是
hash(string str)
{
return str[0]-'a';
}
就算強碰撞的,也就是說很容易發生沖突,比如abc和acb都會被映射到同一個地方,而如果你寫成了27*27*(str[0]-'a')+27*(str[1]-'a')+str[2]-'a'就比之前的好多了,因為他考慮了字元串的前三位,而最開始的只考慮一位
若你寫成return 0,則就是100%沖突了,沖突就是所謂的碰撞,這樣的hash沒有一點優勢,因為他的效率就是線性表的效率,o(n)的。
以上是我自己的感想,希望對你有用
⑼ 什麼是哈希演算法
就是空間映射函數,例如,全體的長整數的取值作為一個取值空間,映射到全部的位元組整數的取值的空間,這個映射函數就是HASH函數。通常這種映射函數是從一個非常大的取值空間映射到一個非常小的取值空間,由於不是一對一的映射,HASH函數轉換後不可逆,即不可能通過逆操作和HASH值還原出原始的值,受到計算能力限制(注意,不是邏輯上不可能,前面的不可能是邏輯上的)而且也無法還原出所有可能的全部原始值。HASH函數運用在字典表等需要快速查找的數據結構中,他的計算復雜度幾乎是O(1),不會隨著數據量增加而增加。另外一種用途就是文件簽名,文件內容很多,將文件內容通過HASH函數處理後得到一個HASH值,驗證這個文件是否被修改過,只需要把文件內容用同樣的HASH函數處理後得到HASH值再比對和文件一起傳送的HASH值即可,如不公開HASH演算法,那麼信道是無法篡改文件內容的時候篡改文件HASH值,一般應用的時候,HASH演算法是公開的,這時候會用一個非對稱加密演算法加密一下這個HASH值,這樣即便能夠計算HASH值,但沒有加密密鑰依然無法篡改加密後HASH值。這種演算法用途很廣泛,用在電子簽名中。HASH演算法也可進行破解,這種破解不是傳統意義上的解密,而是按照已有的HASH值構造出能夠計算出相同HASH值的其他原文,從而妨礙原文的不可篡改性的驗證,俗稱找碰撞。這種碰撞對現有的電子簽名危害並不嚴重,主要是要能夠構造出有意義的原文才有價值,否則就是構造了一個完全不可識別的原文罷了,接收系統要麼無法處理報錯,要麼人工處理的時候發現完全不可讀。理論上我們終於找到了在可計算時間內發現碰撞的演算法,推算了HASH演算法的逆操作的時間復雜度大概的范圍。HASH演算法的另外一個很廣泛的用途,就是很多程序員都會使用的在資料庫中保存用戶密碼的演算法,通常不會直接保存用戶密碼(這樣DBA就能看到用戶密碼啦,好危險啊),而是保存密碼的HASH值,驗證的時候,用相同的HASH函數計算用戶輸入的密碼得到計算HASH值然後比對資料庫中存儲的HASH值是否一致,從而完成驗證。由於用戶的密碼的一樣的可能性是很高的,防止DBA猜測用戶密碼,我們還會用一種俗稱「撒鹽」的過程,就是計算密碼的HASH值之前,把密碼和另外一個會比較發散的數據拼接,通常我們會用用戶創建時間的毫秒部分。這樣計算的HASH值不大會都是一樣的,會很發散。最後,作為一個老程序員,我會把用戶的HASH值保存好,然後把我自己密碼的HASH值保存到資料庫裡面,然後用我自己的密碼和其他用戶的用戶名去登錄,然後再改回來解決我看不到用戶密碼而又要「偷窺」用戶的需要。最大的好處是,資料庫泄露後,得到用戶資料庫的黑客看著一大堆HASH值會翻白眼。
⑽ 哈希函數的三個性質
比特幣是世界上第一種成功的加密貨幣,之前的嘗試都沒有像比特幣這樣有效解決有關貨幣的各種問題。
比特幣本身是密碼學發展的產物,利用了密碼學中的很重要的「單向散列函數」以及數字簽名兩大技術來構建,今天我們來集中講解單向散列函數的5種重要的特性。
哈希函數的特性:
單向散列函數(one-wayhash function),也就是通俗叫的哈希函數。
第一個特點:輸入可以任意長度,輸出是固定長度
哈希函數不用知道輸入信息代表的是什麼意思,也無所謂信息的長度有多長,只要輸入hash函數出來的都是固定長度的比特值。比如非常有名的SHA256 哈希函數,輸入任何值出來的都是256比特的0和1. 輸入一本《三國演義》或者僅僅輸入一個字母a,出來的都是256位比特長度的數據。
第二個特點:計算hash值的速度比較快
這一點經常被大家所忽略,似乎是習以為常的東西就不去在意,其實這一點同樣重要,因為單向哈希的計算很快,才能保證加密或者驗證的速度。
第三個特點,防碰撞特性(Collisionresistance)
X≠y,H(x)=H(y) 輸入空間遠遠大於輸出空間,比如256位的哈希值指的就是輸出空間是2^256這么多,輸入是無限可能的,輸出是固定長度。
但是,目前沒有找到沒有好的方法去找出一個x能得到H(x)等於右邊的值。
遍歷所有輸入的可能能去找到這個值,叫做brute-force暴力破解嗎,也就是現在礦機所謂的「哈希碰撞」這個詞的來源。
哈希防碰撞用處是保證上傳和下載的數據是一樣的,就是改一點點出來的結果差很多。舉個例子,你輸入的信息是一部《紅樓夢》(當然電腦識別出來就是0和1),然後你在紅樓夢的第100頁的第五句話把一個逗號改成句號,然後輸出的hash值就完全不同了。這就是哈希函數一個非常重要的特性。
但是collision resistance目前沒有數學證明這個碰撞不會發生,MD5就是最好的例子,之前是很安全的,但是後來找到了破解方法