熟悉區(qū)塊鏈的朋友首先想到的肯定就是比特幣挖礦,比特幣挖礦就是不斷修改區(qū)塊頭部的隨機數(shù),然后計算區(qū)塊的哈希值,知道這個哈希值滿足特定標準的過程,那么哈希算法到底是什么?
什么是哈希算法?
哈希算法又叫散列算法,是將任意長度的二進制值映射為較短的固定長度的二進制值,這個小的二進制值稱為哈希值。它的原理其實很簡單,就是把一段交易信息轉(zhuǎn)換成一個固定長度的字符串。
這串字符串具有一些特點:
1.信息相同,字符串也相同。
2.信息相似不會影響字符串相同。
3.可以生成無數(shù)的信息,但是字符串的種類是一定的,所以是不可逆的。
讓我們舉個例子理解一下:如果我們要搜一張圖片,在沒有人工標注的情況下,于巨大的圖庫中想要以圖搜圖是一件及其龐大而又困難的工作量。
可是在訓練集上,通過哈希算法,可以得到一系列哈希函數(shù),通過這些函數(shù),可以將每一張圖片轉(zhuǎn)化成一串0~1的編碼。
比較神奇的是,編碼串相似的圖片對應的語義也是相似的。
這就是簡單的哈希算法在實際生活中的使用。
哈希算法有什么用途?
哈希算法可以檢驗信息是否是相同的,這樣的優(yōu)勢可以節(jié)省重復文件傳送的時間。
舉一個生活中很平常的例子,我們在生活工作中會使用一些軟件給別人傳送文件數(shù)據(jù),如果有人傳送了一份文件給一個人,然后又有一個人傳送了相同的文件給了另外一個人,那么這個社交軟件在第二次傳送文件的時候會對比兩次傳送的哈希值,發(fā)現(xiàn)是相同的,該軟件就不會再次上傳文件給服務器了。
除此之外,哈希算法還可以檢驗信息的擁有者是否真實。
比如,我們在一個網(wǎng)站注冊一個賬號,如果網(wǎng)站把密碼保存起來,那這個網(wǎng)站不論有多安全,也會有被盜取的風險。但是如果用保存密碼的哈希值代替保存密碼,就沒有這個風險了,因為哈希值加密過程是不可逆的。
哈希算法會不會被破解?
從理論上說,哈希值是可以被獲得的,但是對應的用戶密碼很難獲得。
假設一個網(wǎng)站被攻破,黑客獲得了哈希值,但僅僅只有哈希值還不能登錄網(wǎng)站,他還必須算出相應的賬號密碼。
計算密碼的工作量是非常龐大且繁瑣的,嚴格來講,密碼是有可能被破譯的,但破譯成本太大,被成功破譯的幾率很小,所以基本是不用擔心密碼泄露的。
當然,黑客們還可以采用一種物理方法,那就是猜密碼。他可以隨機一個一個的試密碼,如果猜的密碼算出的哈希值正好與真正的密碼哈希值相同,那么就說明這個密碼猜對了。
密碼的長度越長,密碼越復雜,就越難以猜正確。如果有一種方法能夠提高猜中密碼的可能,那么可以算是哈希算法被破解了。
比如說,例如原本猜中的概率是1/10000000000000,現(xiàn)在增加到了1/1000。如果每猜一個密碼需要1秒,按照之前的概率猜,直到地球毀滅都可能沒猜中,但后者只需要1小時就足夠了。在這樣的情況下,哈希算法就算是被破解啦。
好啦,看到這里你是不是對哈希算法有了初步的了解?大家也不要過于擔心你的賬戶以及資產(chǎn)被黑的風險,因為哈希算法僅僅只是比特幣的原理算法,還有其他算法一同作用于比特幣的運行,因此就算破解了哈希算法也并不能盜取你的賬戶信息。