安全算法(一):安全技術(shù)、加密的基礎(chǔ)知識(shí)、哈希函數(shù)的簡(jiǎn)單介紹
通過互聯(lián)網(wǎng)交換數(shù)據(jù)時(shí),數(shù)據(jù)要經(jīng)過各種各樣的網(wǎng)絡(luò)和設(shè)備才能傳到對(duì)方那里。數(shù)據(jù)在傳輸過程中有可能會(huì)經(jīng)過某些惡意用戶的設(shè)備,從而導(dǎo)致內(nèi)容被盜取。
因此,要想安全地使用互聯(lián)網(wǎng),安全技術(shù)是不可或缺的。
傳輸數(shù)據(jù)時(shí)的四個(gè)問題:竊聽、假冒、篡改、事后否認(rèn)
竊聽
假冒
篡改
除了被第三者篡改外,通信故障導(dǎo)致的數(shù)據(jù)損壞也可能會(huì)使消息內(nèi)容發(fā)生變化。
事后否認(rèn)
這種情況會(huì)導(dǎo)致互聯(lián)網(wǎng)上的商業(yè)交易或合同簽署無法成立。這種行為便是“事后否認(rèn)”。
解決這些問題的安全技術(shù):加密、消息認(rèn)證碼、數(shù)字簽名
問題和相應(yīng)的解決方法總結(jié):
*“數(shù)字簽名”技術(shù)存在“無法確認(rèn)公開密鑰的制作者”這一問題。要想解決這個(gè)問題,可以使用“數(shù)字證書”技術(shù)。
密文與解密
在傳輸數(shù)據(jù)中,數(shù)據(jù)可能會(huì)被第三者惡意竊聽。我們需要給想要保密的數(shù)據(jù)加密。加密后的數(shù)據(jù)被稱為**“密文”**。
B 收到密文后,需要解除加密才能得到原本的數(shù)據(jù)。 把密文恢復(fù)為原本數(shù)據(jù)的操作就叫作**“解密”**。
計(jì)算機(jī)會(huì)用由 0 和 1 這兩個(gè)數(shù)字表示的二進(jìn)制來管理所有數(shù)據(jù)
對(duì)計(jì)算機(jī)來說,數(shù)據(jù)就是一串有意義的數(shù)字羅列。密文也是數(shù)字羅列,只不過它是計(jì)算機(jī)無法理解的無規(guī)律的數(shù)字羅列。 也就是說,加密就是數(shù)據(jù)經(jīng)過某種運(yùn)算后,變成計(jì)算機(jī)無法理解的數(shù)的過程。
加密技術(shù)的定義:將數(shù)據(jù)變成第三者的計(jì)算機(jī)無法理解的形式,然后再將其恢復(fù)成原本數(shù)據(jù) 的一系列操作就是加密技術(shù)
哈希函數(shù)
哈希函數(shù)可以把給定的數(shù)據(jù)轉(zhuǎn)換成固定長(zhǎng)度的無規(guī)律數(shù)值。轉(zhuǎn)換后的無規(guī)律數(shù)值可以作為數(shù)據(jù)摘要應(yīng)用于各種各樣的場(chǎng)景。
我們可以把哈希函數(shù)想像成攪拌機(jī),將數(shù)據(jù)輸入到哈希函數(shù)后,輸出固定長(zhǎng)度的無規(guī)律數(shù)值。輸出的無規(guī)律數(shù)值就是“哈希值”。哈希值雖然是數(shù)字,但多用十六進(jìn)制來表示。
計(jì)算機(jī)會(huì)用由0和1這兩個(gè)數(shù)字表示的二進(jìn)制來管理所有的數(shù)據(jù)。雖然哈希值是用十六進(jìn)制表示的, 但它也是數(shù)據(jù),在計(jì)算機(jī)內(nèi)部同樣要用二進(jìn)制來進(jìn)行管理。也就是說,哈希函數(shù)實(shí)際上是在計(jì)算機(jī)內(nèi)部進(jìn)行著某種運(yùn)算的。
哈希函數(shù)的特征:
1、無論輸出的數(shù)據(jù)大小,哈希值長(zhǎng)度相同。(十位)
2、如果輸入的數(shù)據(jù)相同,那么輸出的哈希值也必定相同**(使用同一個(gè)哈希算法)**
3、輸入相似的數(shù)據(jù)并不會(huì)導(dǎo)致輸出的哈希值也相似。
4、輸入的兩個(gè)數(shù)據(jù)完全不同,輸出的哈希值也有可能是相同的,雖然出現(xiàn)這種情況的概率比較低。這種情況叫作**“哈希沖突”**。
5、輸出和輸入不可逆:不可能從哈希值反向推算出原本的數(shù)據(jù)。
6、求哈希值的計(jì)算相對(duì)容易
*哈希函數(shù)的算法中具有代表性的是 MD5 、SHA-1和 SHA-2 等。其中 SHA-2 是現(xiàn)在應(yīng)用較為廣泛的一個(gè),而 MD5 和 SHA-1 存在安全隱患,不推薦使用。
(MD5: Message Digest Algorithm 5; SHA: Secure Hash Algorithm)
不同算法的計(jì)算方式也會(huì)有所不同,比如 SHA-1 需要經(jīng)過數(shù)百次的加法和移位運(yùn)算才能生成哈希值。
若使用的算法不同,那么就算輸入的數(shù)據(jù)相同,得到的哈希值不同。
應(yīng)用示例
將用戶輸入的密碼保存到服務(wù)器時(shí)也需要用到哈希函數(shù)。
如果把密碼直接保存到服務(wù)器,可能會(huì)被第三者竊聽,因此需要算出密碼的哈希值,并只存儲(chǔ)哈希值。當(dāng)用戶輸入密碼時(shí),先算出該輸入密碼的哈希值,再把它和服務(wù)器中的哈希值進(jìn)行比對(duì)。這樣一來,就算保存的哈希值暴露了,鑒于上文中提到的哈希函數(shù)的第五個(gè)特征(輸入輸出不可逆),第三者也無法得知原本的密碼。
密碼的哈希值,并只存儲(chǔ)哈希值。當(dāng)用戶輸入密碼時(shí),先算出該輸入密碼的哈希值,再把它和服務(wù)器中的哈希值進(jìn)行比對(duì)。這樣一來,就算保存的哈希值暴露了,鑒于上文中提到的哈希函數(shù)的第五個(gè)特征(輸入輸出不可逆),第三者也無法得知原本的密碼。
就像這樣,使用哈希函數(shù)可以更安全地實(shí)現(xiàn)基于密碼的用戶認(rèn)證。文章來源:http://www.zghlxwxcb.cn/news/detail-757628.html
參考資料:我的第一本算法書 (石田保輝 宮崎修一)文章來源地址http://www.zghlxwxcb.cn/news/detail-757628.html
到了這里,關(guān)于安全算法(一):安全技術(shù)、加密的基礎(chǔ)知識(shí)、哈希函數(shù)的簡(jiǎn)單介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!