MD5的簡介:MD5即Message-Digest Algorithm 5(信息-摘要演算法5),用於確保信息傳輸完整一致。是電腦廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD5實現。將數據(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD5的前身有MD2、MD3 ...
MD5的簡介:MD5即Message-Digest Algorithm 5(信息-摘要演算法5),用於確保信息傳輸完整一致。是電腦廣泛使用的雜湊演算法之一(又譯摘要演算法、哈希演算法),主流編程語言普遍已有MD5實現。將數據(如漢字)運算為另一固定長度值,是雜湊演算法的基礎原理,MD5的前身有MD2、MD3和MD4。
MD5演算法具有以下特點:
1、壓縮性:任意長度的數據,算出的MD5值長度都是固定的。
2、容易計算:從原數據計算出MD5值很容易。
3、抗修改性:對原數據進行任何改動,哪怕只修改1個位元組,所得到的MD5值都有很大區別。
4、強抗碰撞:已知原數據和其MD5值,想找到一個具有相同MD5值的數據(即偽造數據)是非常困難的。
註:MD5常用於密碼加密。
實戰應用:wpf項目中要使用MD5來加密敏感數據保存入庫,但是又要可以實現記住密碼,MD5是不可逆的無法進行解密,而記住密碼保存到本地文件的也是密文,記住密碼後再次登錄就要先解密一遍賦值給當前界面的密碼框,然後點擊登錄再進行加密與資料庫中的作對比,這樣就不能使用MD5去進行記住密碼了。這裡就要使用DES來記住密碼保存本地,登錄的時候,獲取記住的信息DES解密,點擊登錄再MD5加密即可。
實現過程:
獲取界面登錄信息
//獲取登錄信息 loginRecord.Name = tbName.Text.Trim(); loginRecord.MD5Pwd = TrialHelper.GetMD5(tbPwd.Password); //保存到資料庫MD5方式 loginRecord.Pwd = TrialHelper.EncryptDES(tbPwd.Password);//記住密碼des方式,保存到本地 loginRecord.IsSavePwd = (bool)cbSaveName.IsChecked; loginRecord.IsAutoLogin = (bool)cbAutoLogin.IsChecked;
實現登錄
//用MD5加密的去登錄 LoginService.LoginInfo lgInfo=LoginService.LoginService.GetLoginUserInfo(loginRecord.Name, loginRecord.MD5Pwd);
登錄成功後記住密碼保存賬戶信息到本地文件
//登錄成功後保存配置文件 XmlHelper.XmlSerializeToFile(loginRecord, "LoginInfo.ini");
記住密碼登錄方式和自動登錄方式,再從配置文件讀取賬戶信息賦值到界面,最後點擊登錄邏輯還是一樣,經MD5加密去登錄與資料庫中的密文進行對比。
//獲取登錄配置信息並賦值到界面,LoginInfo記錄的密碼是加密的 loginRecord = XmlHelper.XmlDeserializeFromFile<LoginRecord>("LoginInfo.ini"); if (loginRecord != null) { tbName.Text = loginRecord.Name;//用戶名輸入框賦值 tbPwd.Password = TrialHelper.DecryptDES(loginRecord.Pwd);//密碼輸入框賦值,Des解密後的值 cbAutoLogin.IsChecked = loginRecord.IsAutoLogin;//自動登錄選框 cbSaveName.IsChecked = loginRecord.IsSavePwd; //記住密碼選框 if (loginRecord.IsAutoLogin)//自動登錄 { btnLogin_Click(null, null); } }