㈠ 朋友老說哈希演算法,請問到底什麼是哈希演算法
首先,一般哈希演算法不是大學里數據結構課里那個HASH表的演算法。一般哈希演算法是密碼學的基礎,比較常用的有MD5和SHA,最重要的兩條性質,就是不可逆和無沖突。
所謂不可逆,就是當你知道x的HASH值,無法求出x;
所謂無沖突,就是當你知道x,無法求出一個y, 使x與y的HASH值相同。
這兩條性質在數學上都是不成立的。因為一個函數必然可逆,且由於HASH函數的值域有限,理論上會有無窮多個不同的原始值,它們的hash值都相同。MD5和SHA做到的,是求逆和求沖突在計算上不可能,也就是正向計算很容易,而反向計算即使窮盡人類所有的計算資源都做不到。
我覺得密碼學的幾個演算法(HASH、對稱加密、公私鑰)是計算機科學領域最偉大的發明之一,它授予了弱小的個人在強權面前信息的安全(而且是絕對的安全)。舉個例子,只要你一直使用https與國外站點通訊,並注意對方的公鑰沒有被篡改,G**W可以斷開你的連接,但它永遠不可能知道你們的傳輸內容是什麼。
順便說一下,王小雲教授曾經成功製造出MD5的碰撞,即md5(a) = md5(b)。這樣的碰撞只能隨機生成,並不能根據一個已知的a求出b(即並沒有破壞MD5的無沖突特性)。但這已經讓他聲名大噪了。
㈡ sha和dmg區別
含義不同。
其中sha的含義是一種安全哈希演算法,另外dmg的含義是武器的傷害范圍,因此它們兩者的區別是含義的不同。
㈢ 哈希演算法和哈希表的區別
哈希演算法將任意長度的二進制值映射為較短的固定長度的二進制值,這個小的二進制值稱為哈希值。哈希函數實現了哈希演算法,返回值就是 hash code。哈希表是一個數據結構,內部實現靠哈希函數。
㈣ 哈希的演算法是什麼
哈希演算法是一個廣義的演算法,也可以認為是一種思想,使用Hash演算法可以提高存儲空間的利用率,可以提高數據的查詢效率,也可以做數字簽名來保障數據傳遞的安全性。所以Hash演算法被廣泛地應用在互聯網應用中。
哈希演算法也被稱為散列演算法,Hash演算法雖然被稱為演算法,但實際上它更像是一種思想。Hash演算法沒有一個固定的公式,只要符合散列思想的演算法都可以被稱為是Hash演算法。

特點:
加密哈希跟普通哈希的區別就是安全性,一般原則是只要一種哈希演算法出現過碰撞,就會不被推薦成為加密哈希了,只有安全度高的哈希演算法才能用作加密哈希。
同時加密哈希其實也能當普通哈希來用,Git 版本控制工具就是用 SHA-1 這個加密哈希演算法來做完整性校驗的。一般來講越安全的哈希演算法,處理速度也就越慢,所以並不是所有的場合都適合用加密哈希來替代普通哈希。
㈤ 什麼是哈希演算法具體怎麼用啊有什麼用啊
哈希(Hash)演算法,即散列函數。它是一種單向密碼體制,即它是一個從明文到密文的不可逆的映射,只有加密過程,沒有解密過程。同時,哈希函數可以將任意長度的輸入經過變化以後得到固定長度的輸出。哈希函數的這種單向特徵和輸出數據長度固定的特徵使得它可以生成消息或者數據。
計算方法:
用來產生一些數據片段(例如消息或會話項)的哈希值的演算法。使用好的哈希演算法,在輸入數據中所做的更改就可以更改結果哈希值中的所有位;因此,哈希對於檢測數據對象(例如消息)中的修改很有用。此外,好的哈希演算法使得構造兩個相互獨立且具有相同哈希的輸入不能通過計算方法實現。典型的哈希演算法包括 MD2、MD4、MD5 和 SHA-1。哈希演算法也稱為「哈希函數」。
另請參閱: 基於哈希的消息驗證模式 (HMAC), MD2, MD4, MD5,消息摘要, 安全哈希演算法 (SHA-1)
MD5一種符合工業標準的單向 128 位哈希方案,由 RSA Data Security, Inc. 開發。 各種「點對點協議(PPP)」供應商都將它用於加密的身份驗證。哈希方案是一種以結果唯一並且不能返回到其原始格式的方式來轉換數據(如密碼)的方法。質詢握手身份驗證協議(CHAP) 使用質詢響應並在響應時使用單向 MD5哈希法。按照此方式,您無須通過網路發送密碼就可以向伺服器證明您知道密碼。
質詢握手身份驗證協議(CHAP)「點對點協議(PPP)」連接的一種質詢響應驗證協議,在 RFC 1994 中有所描述。 該協議使用業界標准 MD5哈希演算法來哈希質詢串(由身份驗證伺服器所發布)和響應中的用戶密碼的組合。
點對點協議
用點對點鏈接來傳送多協議數據報的行業標准協議套件。RFC 1661 中有關於 PPP 的文檔。
另請參閱: 壓縮控制協議 (CCP),遠程訪問,徵求意見文檔 (RFC),傳輸控制協議/Internet 協議 (TCP/IP),自主隧道。
㈥ 什麼是hash函數
哈希函數(Hash Function),也稱為散列函數,給定一個輸入 x ,它會算出相應的輸出 H(x) 。哈希函數的主要特徵是:
另外哈希函數一般還要求以下兩種特點:
1、免碰撞 :即不會出現輸入 x≠y ,但是H(x)=H(y) 的情況,其實這個特點在理論上並不成立,比如目前比特幣使用的 SHA256 演算法,會有 2^256 種輸出,如果我們進行 2^256 + 1 次輸入,那麼必然會產生一次碰撞,事實上,通過 理論證明 ,通過 2^130 次輸入就會有99%的可能性發生一次碰撞,不過即使如此,即便是人類製造的所有計算機自宇宙誕生開始一直運算到今天,發生一次碰撞的幾率也是極其微小的。
2、隱匿性 :也就是說,對於一個給定的輸出結果 H(x) ,想要逆推出輸入 x ,在計算上是不可能的。如果想要得到 H(x) 的可能的原輸入,不存在比窮舉更好的方法。
hash 演算法的原理是試圖將一個空間的數據集映射到另外一個空間(通常比原空間要小),並利用質數將數據集能夠均勻的映射。目前主流的 hash 演算法有: md4 、 md5 、 sha系列 。
MD4是麻省理工學院教授 Ronald Rivest 於1990年設計出來的演算法。其摘要長度為128位,一般用32位的十六進制來表示。
2004年8月清華大學教授王小雲,指出在計算MD4時可能發生雜湊沖撞。不久之後,Dobbertin 等人發現了MD4在計算過程中第一步和第三步中的漏洞,並向大家演示了如何利用一部普通電腦在幾分鍾內找到MD4中的沖突,毫無疑問,MD4就此被淘汰掉了。
1991年,Rivest 開發出技術上更為趨近成熟的MD5演算法,它在MD4的基礎上增加了"安全-帶子"(safety-belts)的概念。雖然 MD5 比 MD4 復雜度大一些,但卻更為安全。這個演算法很明顯的由四個和 MD4 設計有少許不同的步驟組成。
MD5 擁有很好的抗修改性,即對原數據進行任何改動,哪怕只修改1個位元組,所得到的MD5值都有很大區別。
MD5很好的用在了大文件的斷點續傳上:如果有一個 5MB 的文件 客戶端把它分割成5片 1MB 的文件 在上傳的時候上傳兩個 MD5 值,一個是當前上傳的文件片的 MD5 還有一個就是拼接之後的 MD5 (如果現在上傳的是第二片 這個MD5就應該是第一片加上第二片的MD5), 通過這樣的方式能保證文件的完整性。
當如果文件傳到一半斷了,伺服器可以通過驗證文件 MD5 值就可以得知用戶已經傳到了第幾片,並且知道之前上傳的文件有沒有發生變化,就可以判斷出用戶需要從第幾片開始傳遞。
不過在2004年8月的國際密碼學會議(Crypto』2004),王小雲提出了一種快速找到 MD5 碰撞的方法(參見其 論文 ),降低了 MD5 的安全性,人們開始尋求更加可靠的加密演算法。
SHA的全稱是Secure Hash Algorithm(安全hash演算法),SHA系列有五個演算法,分別是 SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美國國家安全局(NSA)所設計,並由美國國家標准與技術研究院(NIST)發布,是美國的政府標准。後四者有時並稱為 SHA-2。SHA-1在許多安全協定中廣為使用,包括 TLS/SSL 等,是 MD5 的後繼者。
最初該演算法於1993年發布,稱做安全散列標准 (Secure Hash Standard),最初這個版本被稱為"SHA-0",它在發布之後很快就被NSA撤回,因為有很大的安全缺陷,之後在1995年發布了修訂版本,也就是SHA-1。
SHA-0 和 SHA-1 會從一個最大 2^64 位元的訊息中產生一串 160 位元的摘要,然後以 MD4 及 MD5 演算法類似的原理來加密。
2017年,谷歌發布了最新的研究成功,宣布攻破了SHA-1,並詳細描述了成功的SHA1碰撞攻擊方式,使用這種方式,可以在亞馬遜的雲計算平台上,耗時10天左右創建出SHA-1碰撞,並且成本可以控制在11萬美元以內。
即使如此,對於單台機器來說攻擊的成本依然很高,發生一次SHA-1碰撞需要超過 9,223,372,036,854,775,808 個SHA1計算,這需要使用你的機器進行6500年計算。
SHA2包括了SHA-224、SHA-256、SHA-384,和SHA-512,這幾個函數都將訊息對應到更長的訊息摘要,以它們的摘要長度(以位元計算)加在原名後面來命名,也就是說SHA-256會產生256位長度摘要。
SHA-2相對來說是安全的,至今尚未出現對SHA-2有效的攻擊!
由於目前大量的網站使用的SSL數字證數都是使用SHA-1簽名的,而SHA-1又已經不安全,各大瀏覽器廠商均宣布了棄用SHA-1的時間表:
可以看出,在時間表之後,如果檢測到網站的證書使用的還是SHA-1,就會彈出警告:
為了防止網站因出現上面的警告而顯得不專業,我們需要盡快的申請使用跟安全放心的基於SHA-2簽名的證書。
㈦ 常見的哈希演算法有哪些
1.linear hash 線性
2.quadratic hash 每次以1,4,9,16這樣的幅度向下找
3.double hash 用兩個函數一起決定HASH的index
㈧ 什麼是哈希表和哈希演算法
哈希演算法並不是一個特定的演算法而是一類演算法的統稱。哈希演算法也叫散列演算法,一般來說滿足這樣的關系:f(data)=key,輸入任意長度的data數據,經過哈希演算法處理後輸出一個定長的數據key。同時這個過程是不可逆的,無法由key逆推出data。如果是一個data數據集,經過哈希演算法處理後得到key的數據集,然後將keys與原始數據進行一一映射就得到了一個哈希表。一般來說哈希表M符合M[key]=data這種形式。哈希表的好處是當原始數據較大時,我們可以用哈希演算法處理得到定長的哈希值key,那麼這個key相對原始數據要小得多。我們就可以用這個較小的數據集來做索引,達到快速查找的目的。稍微想一下就可以發現,既然輸入數據不定長,而輸出的哈希值卻是固定長度的,這意味著哈希值是一個有限集合,而輸入數據則可以是無窮多個。那麼建立一對一關系明顯是不現實的。所以"碰撞"(不同的輸入數據對應了相同的哈希值)是必然會發生的,所以一個成熟的哈希演算法會有較好的抗沖突性。同時在實現哈希表的結構時也要考慮到哈希沖突的問題。密碼上常用的MD5,SHA都是哈希演算法,因為key的長度(相對大家的密碼來說)較大所以碰撞空間較大,有比較好的抗碰撞性,所以常常用作密碼校驗。
麻煩採納,謝謝!