標籤:
演算法簡介
MD5的全稱是Message-Digest Algorithm 5(資訊-摘要演算法),在90年代初由Mit Laboratory for Computer Science和Rsa data security inc的Ronald l. rivest開發出來,經md2、md3和md4發展而來。它的作用是讓大容量資訊在用數位簽章軟體簽署私人密匙前被“壓縮”成一種保密的格式(就是把一個任意長度的位元組串變換成一定長的大整數).不管是md2、md4還是md5,它們都需要獲得一個隨機長度的資訊併產生一個128位的資訊摘要.
MD5 演算法的雜湊值大小為 128 位。是一種無法復原的演算法。
演算法特點
- 兩個不同的明文不會得到相同的輸出值
- MD5結果不能反推明文,無法復原
安全性
從安全的角度講,MD5的輸出為128位,若採用純強力攻擊尋找一個訊息具有給定Hash值的計算困難性為2128,用每秒可實驗1000000000個訊息的電腦需時1.07×1022年。若採用生日攻擊法,尋找有相同Hash值的兩個訊息需要實驗264個訊息,用每秒可實驗1000000000個訊息的電腦需時585年。
實際應用上,例如我知道‘password’的MD5值是5f4dcc3b5aa765d61d8327deb882cf99,那麼我就用一個資料庫存起來,只要我看到5f4dcc3b5aa765d61d8327deb882cf99,我就知道這個是口令‘password‘使用MD5處理之後的值,原來的口令就是’password‘。MD5在身份鑒別系統中用於口令保護已經是很久了事情了,大部分駭客也有針對這種Hash方式準備相應的資料庫進行反查,這種資料庫稱為彩虹表,MD5的安全性大大減弱。
MD5加密常式
var crypto = require(‘crypto‘);var content = ‘password‘var md5 = crypto.createHash(‘md5‘);md5.update(content);var d = md5.digest(‘hex‘); //MD5值是5f4dcc3b5aa765d61d8327deb882cf99
SHA1演算法演算法簡介
SHA1的全稱是Secure Hash Algorithm(安全雜湊演算法)。加密雜湊函數將任意長度的二進位字串映射為固定長度的小型二進位字串。加密雜湊函數有這樣一個屬性:在計算上不大可能找到散列為相同的值的兩個不同的輸入;也就是說,兩組資料的雜湊值僅在對應的資料也匹配時才會匹配。資料的少量更改會在雜湊值中產生不可預知的大量更改。所以你很難從加密後的文字中找到蛛絲馬跡。
SHA1 演算法的雜湊值大小為 160 位。是一種無法復原的演算法。
SHA1加密常式
var crypto = require(‘crypto‘);var content = ‘password‘var shasum = crypto.createHash(‘sha1‘);shasum.update(content);var d = shasum.digest(‘hex‘);
MD5與sha1的不同點
- MD5 使用小端排序LITTLE-ENDIAN,sha1 使用大端排序BIG-ENDIAN
- MD5最後產生的摘要資訊是16個位元組,SHA1是20個位元組。
密碼編譯演算法初識