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