它的英文是hash,其本意是切碎并攪拌的意思,哈希函數的運算結果就是哈希值,通常簡稱為哈希,而哈希函數有時候也翻譯做散列函數。根據我們的搜索,在維基百科的定義中,哈希函數要做的事情是給一個任意大小的數據生成出一個固定長度的數據,作為它的映射。
哈希算法在生活中的應用要比我們想象中要廣泛。
它可以檢驗信息是否是相同的,這樣的優勢是可以節省重復數據傳送的時間。就像我們在一些網盤中上傳的文件,如果文件內容相同的話,哪怕屬于不同的用戶,也可以通過對比哈希值避免向服務器重復上傳相同的文件,可以很大程度上節約存儲資源,提高存儲效率。除此之外,哈希算法也可以對網站注冊用戶的密碼進行加密保護。
在密碼學中,哈希算法的主要作用是用于消息摘要和簽名,主要用于消息的完整性校驗。哈希算法不可逆,用于密文保存密碼的簽名,網站后臺只保存簽名值。這樣即使網站保存的信息被盜取,也無法獲取用戶的密碼,具有更高的安全性。
下一步我們把哈希函數分類,更細致的聊聊哈希算法的特點。首先說哈希算法有很多種,例如md5,sha256等等,但是它們總體上可以分為兩大類,一類是普通哈希,另外一類是加密哈希,cryptographic hash function。
業界可以找到的哈希算法是有很多種的。我們可以大致按照輸出的哈希的長度來聊,雖然哈希算法的安全性也不單單是跟哈希長度有關,但是一般哈希值越長也就是越安全。
例如CRC-32的輸出是32 bit,也就是32位的二進制數,表示成十六進制就是8位。MD5算法的哈希是32位16進制數,比較常見。SHA-256是256個Bit,十六進制表示就是64位。這些算法可以分成普通哈希和加密哈希算法,兩種算法之間沒有特別明顯的區別。例如本來MD5就是設計出來做加密哈希的,但是后來由于計算機的發展MD5出現碰撞的可能性就很大了,所以目前MD5只能當普通哈希用,用來做數據校驗。
加密哈希跟普通哈希的區別就是安全性,一般原則是只要一種哈希算法出現過碰撞,就會不被推薦成為加密哈希了,只有安全度高的哈希算法才能用作加密哈希。
同時加密哈希其實也能當普通哈希來用,Git版本控制工具就是用SHA-1這個加密哈希算法來做完整性校驗的。一般來講越安全的哈希算法,處理速度也就越慢,所以并不是所有的場合都適合用加密哈希來替代普通哈希。
在密碼學領域,有兩個算法都是把數據做輸入,而輸出是一段誰也看不懂的數據。其中一個就是哈希算法,另外一個是加密算法。注意,哈希算法和加密算法是完全不同的。
首先哈希算法的輸出長度是固定的,而加密算法的輸出長度是跟數據本身長度直接相關的,第二,哈希是不可以逆向運算出數據的,而加密算法的輸出是要能夠逆向運算出數據的。關于加密算法。
相關閱讀推薦
最新資訊
最新游戲
經典臺球單機版
查看三職業傳奇手游
查看我的世界boss挑戰手機版
查看臺球之王
查看恐怖雙胞胎中文版最新版
查看歡樂釣魚大師華為版
查看饑荒:夢魘王座手機版
查看精英槍戰訓練營
查看LoveMeKillMe
查看熱門文章