自己的密碼在網(wǎng)站中是如何存儲(chǔ)的?

 

每天,我們不論通過手機(jī)還是電腦,都要登錄無數(shù)的網(wǎng)頁,但是,網(wǎng)頁是如何存儲(chǔ)我們的登錄信息的呢?這一直是我們好奇的事情,今天,小編就帶領(lǐng)大家來了解一下自己的密碼是如何存儲(chǔ)在網(wǎng)站上的哦!
早期也就是很早的時(shí)候,系統(tǒng)里可能直接存的就是用戶的明文密碼,密碼是什么就存什么,然后每次校驗(yàn)直接匹配就好了.后來人們開始使用哈希進(jìn)行加密,得到現(xiàn)在的普遍使用的密文.
最簡單的基于密文的密碼存儲(chǔ)策略(通??赡苁荕D5加密方式)就是我下面畫的圖:
網(wǎng)站如何存儲(chǔ)密碼流程圖
? ? ? ?哈希算法是一個(gè)單向的函數(shù),將任意大小的數(shù)據(jù)轉(zhuǎn)換成統(tǒng)一長度的密文,并且無法被反向計(jì)算.并且每個(gè)不同數(shù)據(jù) 通過哈希函數(shù) 轉(zhuǎn)換成的結(jié)果都是不同的.
程序中真正比對(duì)的是密文哈希值,只有相同才被授權(quán).不相同也不要告知到底是用戶名錯(cuò)誤還是密碼錯(cuò)誤,給出一個(gè)模糊的提示就行,防攻擊者在不知道密碼的情況下,遍歷出可用的用戶名.
不是所有的哈希函數(shù)都是安全的,適用于加密的.有些哈希函數(shù)是用于哈希表這類數(shù)據(jù)結(jié)構(gòu),方便快速查找的.適用于加密的有類似于:SHA256,SHA512,RipeMD之類的哈希函數(shù).
最后要說明,單純的哈希加密太容易破解了,從目前的狀況看它并不安全.
為何說單純的哈希加密并不安全?
? ? ? ?之所以說單純的哈希加密并不安全因?yàn)槠平獾姆绞接泻芏?鑒于現(xiàn)在計(jì)算機(jī)性能(CPU發(fā)展已經(jīng)到了一個(gè)瓶頸,現(xiàn)在普通的筆記本性能幾乎就是20年前的超級(jí)計(jì)算機(jī))的提升以及黑客技術(shù)的進(jìn)步,很多網(wǎng)站都提供了破解哈希的功能.下面列舉出一些常用的破解方式:
暴力破解(這是不可阻止的破解方式之一,在給定長度的情況下嘗試各種字符的組合,雖然效率非常低,但通過遍歷最終一定會(huì)得到密碼,相當(dāng)于把所有的可能都嘗試一遍)
字典攻擊(同樣是不可阻止的破解方式之一,相當(dāng)于暴力破解的升級(jí)版,通過收集常用的單詞,詞組,密碼然后將所有的都存儲(chǔ)起來,根據(jù)這些更加接近的數(shù)據(jù)進(jìn)行比對(duì),碰運(yùn)氣去猜)
查表法(預(yù)先計(jì)算密碼字典中得每個(gè)密碼,然后把哈希值和對(duì)應(yīng)密碼存儲(chǔ)到一個(gè)快插查詢的數(shù)據(jù)結(jié)構(gòu)中,以后就查詢這個(gè)表就行了)
彩虹表(這才是大殺器,說白了就是把一定長度的明文密碼以及對(duì)應(yīng)的哈希密碼都存儲(chǔ)下來,然后按照查表法的方式進(jìn)行破解)
今天,小編告訴大家的問題,能否滿足大家的好奇心呢!希望對(duì)大家有所幫助哦!