亞洲財經商學院
關注
帶著問題閱讀會更高效哦:
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)
來源/轉自/區塊鏈學習網
精彩推薦!
感謝原作者的辛苦創作,如轉載涉及版權等問題,請聯繫我們進行刪除處理,謝謝!!
關於我們
亞洲財經商學院(簡稱亞財商學院)是由亞洲財經發起成立,清華大學等院校合作辦學,是中國首家互聯網金融黃埔軍校。
專為在校大學生、普通投資者、金融從業者、擬從業者等有互聯網金融教育需求的用戶提供學歷教育、職業教育、實踐教育、資格認證等四方面培訓課程。
聯繫我們
長按二維碼關注我們吧
投稿郵箱:[email protected]
↓↓↓
閱讀更多 小豬葛亮 的文章