時(shí)間:2023-07-14|瀏覽:251
- 你在一個(gè)網(wǎng)站注冊(cè)了賬號(hào),輸了密碼、身份證號(hào)、銀行卡號(hào),有沒有擔(dān)心過自己的敏感數(shù)據(jù)會(huì)被泄露呢? - 你是一個(gè)互聯(lián)網(wǎng)產(chǎn)品經(jīng)理,當(dāng)你跟程序員提需求的時(shí)候說:用戶忘記密碼時(shí)把密碼原文通過郵件發(fā)給用戶,程序員是這個(gè)表情:(產(chǎn)品經(jīng)理風(fēng)評(píng)被害 - 你是一個(gè)程序員領(lǐng)導(dǎo)告訴你,用戶的敏感數(shù)據(jù)要進(jìn)行哈希,你是不是這種心情:
其實(shí)這些都跟哈希函數(shù)的應(yīng)用有關(guān),并且存在于我們生活和工作的方方面面。但是當(dāng)大家往往聽到密碼學(xué)、哈希這種詞匯就覺得它很深?yuàn)W,其實(shí)也沒那么復(fù)雜,今天我們就分析一下。
01什么是哈希?
講哈希的話,我們從用戶密碼存儲(chǔ)方式的發(fā)展舉例吧。
1.簡(jiǎn)單的密碼存儲(chǔ)
前幾年我們經(jīng)常會(huì)看到這樣的新聞,“驚!某網(wǎng)站用戶賬號(hào)密碼被泄露”等等。其實(shí)在互聯(lián)網(wǎng)發(fā)展的初期,用戶密碼在數(shù)據(jù)庫(kù)中完全明文存儲(chǔ),黑客進(jìn)了數(shù)據(jù)庫(kù)之后,用戶關(guān)聯(lián)的所有信息都會(huì)被盜,用戶信息毫無安全性可言。
2.經(jīng)過升級(jí)的密碼存儲(chǔ)
哈希函數(shù)是一種單向散列函數(shù),也就是說無法通過散列值推算出消息。用戶密碼經(jīng)過哈希函數(shù)計(jì)算后存儲(chǔ)在數(shù)據(jù)庫(kù)中,當(dāng)用戶再次登錄時(shí),輸入密碼進(jìn)行哈希后與數(shù)據(jù)庫(kù)中的散列值進(jìn)行對(duì)比,以判斷用戶密碼是否正確。
由于哈希函數(shù)的單向性,無法從散列值反推出密碼。所以當(dāng)用戶忘記密碼時(shí),無法通過散列值計(jì)算出原本的密碼。
不過,黑客可以使用彩虹表攻擊來破解哈希值,但為了增加安全性,人們發(fā)明了加鹽的哈希算法。
3.再次升級(jí)的密碼存儲(chǔ)
為了防止彩虹表攻擊,人們?cè)诠K惴ㄖ屑尤臌},增加密碼的安全性。加了鹽之后的哈希值更難破解。
區(qū)塊鏈里面的哈希函數(shù)是指在區(qū)塊鏈技術(shù)中使用的哈希函數(shù),常見的有MD5、SHA-1、SHA-256等。
02區(qū)塊鏈里面的哈希函數(shù)
常見的幾種哈希函數(shù)有MD5、SHA-1、SHA-256、SHA-384、SHA-512和RIPEMD-160。不同的區(qū)塊鏈應(yīng)用可能使用不同的哈希算法。
哈希函數(shù)在密碼學(xué)中起到重要的作用,保護(hù)用戶的敏感數(shù)據(jù)和信息安全。雖然涉及到一些數(shù)學(xué)知識(shí),但對(duì)于不同行業(yè)的讀者來說,了解哈希函數(shù)的基本概念和應(yīng)用就足夠了。如果對(duì)底層實(shí)現(xiàn)感興趣,可以繼續(xù)深入學(xué)習(xí)。
來源:百度 作者:Candy鏈上筆記