MD5主要用途:
1窗价、對一段信息生成信息摘要捌刮,該摘要對該信息具有唯一性,可以作為數(shù)字簽名碰煌。
2、用于驗證文件的有效性(是否有丟失或損壞的數(shù)據(jù)),
3绅作、對用戶密碼的加密拄查,
4、在哈希函數(shù)中計算散列值
MD5是沒有解密算法的棚蓄,經(jīng)常用來作為對賬號密碼的驗證堕扶。驗證的一般流程為:
1.注冊賬號密碼時對密碼進行MD5加密碍脏,賬號明文存入數(shù)據(jù)庫,密碼存入的是經(jīng)過MD5加密的密文稍算。
2.登錄時先根據(jù)賬號典尾,在數(shù)據(jù)庫進行檢測。
3.檢測到賬號后對本次登錄輸入的密碼進行MD5加密糊探,拿本次密文與數(shù)據(jù)庫里的密文進行驗證钾埂。通過后即可成功登錄
ENCRYPT加密
ENCRYPT(str, salt);使用UNIX crypt()函數(shù),用關(guān)鍵詞salt加密字符串str
Salt可以是任意字母科平、數(shù)字褥紫、或是字母或數(shù)字的組合,但必須是隨機產(chǎn)生的瞪慧,每個用戶的Salt都不一樣髓考,用戶注冊的時候,數(shù)據(jù)庫中存入的不是明文密碼弃酌,也不是簡單的對明文密碼進行散列氨菇,而是MD5(明文密碼+ Salt),也就是說:
1. MD5('123' + '1ck12b13k1jmjxrg1h0129h2lj')= '6c22ef52be70e11b6f3bcf0f672c96ce'
2.MD5('456'+'1h029kh2lj11jmjxrg13k1c12b')= '7128f587d88d6686974d6ef57c193628'
當(dāng)用戶登陸的時候妓湘,同樣用這種算法就行驗證查蓉。
由于加了Salt,即便數(shù)據(jù)庫泄露了榜贴,但是由于密碼都是加了Salt之后的散列豌研,別人的數(shù)據(jù)字典已經(jīng)無法直接匹配,明文密碼被破解出來的概率也大大降低唬党。