什麼是哈希算法?(上)

什么是哈希算法?(上)

亞洲財經商學院

關注

什么是哈希算法?(上)

帶著問題閱讀會更高效哦:

1、概念的理解,即什麼是哈希算法?

2、哈希算法的應用場景?

3、哈希算法有哪些特徵?

哈希算法的定義

哈希算法又叫散列算法,是將任意長度的二進制值映射為較短的固定長度的二進制值,這個小的二進制值稱為哈希值。它的原理其實很簡單,就是把一段交易信息轉換成一個固定長度的字符串。

這串字符串具有一些特點:

1. 信息相同,字符串也相同。

2. 信息相似不會影響字符串相同。

3. 可以生成無數的信息,但是字符串的種類是一定的,所以是不可逆的。

舉個例子: 1、《大海撈圖》

讓我們舉個例子理解一下:如果我們要搜一張圖片,在沒有人工標註的情況下,於巨大的圖庫中想要以圖搜圖是一件及其龐大而又困難的工作量。可是在訓練集上,通過哈希算法,可以得到一系列哈希函數,通過這些函數,可以將每一張圖片轉化成一串0~1的編碼。

應用的場景有哪些?

舉個例子: 2、《生活處處要編號》

你去上學,班主任會告訴你一個學號;畢業後上班,HR會給你一個工號;你回家,抬頭看得到門牌;你去桑拿,前臺會給你一塊手牌;

站在管理者的角度看,為了把一攤事管得有秩序,就得排序。這樣協作系統能定位目標,更好地服務。否則,課程沒法排,工資沒法算,快遞員找不到你家,甚至在你洗完澡結賬時都會糾結半天,因為前臺搞不清你到底吃了多少果盤。

編號,要解決兩個問題:

1)能定位;

2)無重號。

小規模編號,比如班級學號,從1、2、3……開始,就能解決問題;

中等規模的如大企業工號,數字前面得加個字母:A120908;

★大規模編號如身份證系統,別管誰進來,統一18位數字標籤貼在你的身份證上。

但,如果是給互聯網裡的所有文件編號,標籤應該如何貼呢?那可是星辰大海呀,如果按老辦法排序,那得到千年後才能給你現在看的這篇文章編上號。而且遇到重號問題如何解決?是否專門安排公務員管這攤事?那有沒有效率更高的編號方法?有,答案是哈希算法。

哈希的特點?

易壓縮:

對於任意大小的輸入x,Hash值的長度很小,在實際應用中,函數H產生的Hash值其長度是固定的。

易計算:

對於任意給定的消息,計算其Hash值比較容易。

單向性:

對於給定的Hash值,要找到使得在計算上是不可行的,即求Hash的逆很困難。在給定某個哈希函數H和哈希值H(M)的情況下,得出M在計算上是不可行的。即從哈希輸出無法倒推輸入的原始數值。這是哈希函數安全性的基礎。

抗碰撞性:理想的Hash函數是無碰撞的,但在實際算法的設計中很難做到這一點。

有兩種抗碰撞性:一種是弱抗碰撞性,即對於給定的消息,要發現另一個消息,滿足在計算上是不可行的;另一種是強抗碰撞性,即對於任意一對不同的消息,使得在計算上也是不可行的。

高靈敏性:這是從比特位角度出發的,指的是1比特位的輸入變化會造成1/2的比特位發生變化。消息M的任何改變都會導致哈希值H(M)發生改變。即如果輸入有微小不同,哈希運算後的輸出一定不同。

什麼是好的哈希算法?

正如前文維基百科的定義:哈希算法只是將文件映射為哈希值,“映射”的意思是投影。既然是投影,那總會不同的人有一模一樣的影子。所以最終在數學意義上,哈希會發生重號,只是重號概率小到我們難以理解地接近零。

這種無限接近零的概率類似於:明天一早你突然當選美國總統、你從小到大每天都中六合彩,或者下一秒49個外星人在你面前排成7×7方陣……的概率。但萬一碰到了呢?我們把這種情況稱為碰撞。

越好的哈希算法發生碰撞的概率越小。

可如果只為完成“少發生碰撞”這一個目標,很容易實現,你只要把哈希值弄得長長的就可以了。但哈希值最終不是純數字編號,而是數字與字母的組合,目的也只有一個:縮短哈希值長度,便於實際應用。畢竟,沒有人會帶一根1米的香腸出差。

如果你要自建一個小型圖片網站,使用CRC-32短哈希算法給圖片貼標籤就足夠了,它能為你提供42億種不同的標籤,而且文件名長度(哈希值)永遠只有8位。

如果你要檢索論文庫,MD5算法足夠你用:哈希值稍長,但幾乎不會有重複,能讓你做出足夠精準的索引。

而商業級加密,你可以用SHA256:哈希值稍長,但倒推難度極大:需要人類當前所有計算能力總和的千萬倍……還不一定能算出來。

所以,無論是CRC-32、MD5、SHA256……並沒有絕對最好的哈希算法。只有在不同場景下,衡量成本收益之後,才存在相對最優。

強烈推薦!

中國首家可挖礦的區塊鏈化教育平臺

免費囤幣,坐等升值!

1500萬枚AFCC送!送!送!

(掃碼下載【亞財商學院】APP)

來源/轉自/區塊鏈學習網

精彩推薦

  • 感謝原作者的辛苦創作,如轉載涉及版權等問題,請聯繫我們進行刪除處理,謝謝!!

關於我們

  • 亞洲財經商學院(簡稱亞財商學院)是由亞洲財經發起成立,清華大學等院校合作辦學,是中國首家互聯網金融黃埔軍校。

  • 專為在校大學生、普通投資者、金融從業者、擬從業者等有互聯網金融教育需求的用戶提供學歷教育、職業教育、實踐教育、資格認證等四方面培訓課程。

聯繫我們

長按二維碼關注我們吧

↓↓↓


分享到:


相關文章: