java中使用MD5进行计算摘要
生活随笔
收集整理的這篇文章主要介紹了
java中使用MD5进行计算摘要
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
java中使用MD5進行加密
??? 在各種應(yīng)用系統(tǒng)的開發(fā)中,經(jīng)常需要存儲用戶信息,很多地方都要存儲用戶密碼,而將用戶密碼直接存儲在服務(wù)器上顯然是不安全的,本文簡要介紹工作中常用的 MD5加密算法,希望能拋磚引玉。(一)消息摘要簡介
一個消息摘要就是一個數(shù)據(jù)塊的數(shù)字指紋。即對一個任意長度的一個數(shù)據(jù)塊進行計算,產(chǎn)生一個唯一指印(對于SHA1是產(chǎn)生一個20字節(jié)的二進制數(shù)組)。消息摘要是一種與消息認證碼結(jié)合使用以確保消息完整性的技術(shù)。主要使用單向散列函數(shù)算法,可用于檢驗消息的完整性,和通過散列密碼直接以文本形式保存等,目前廣泛使用的算法有MD4、MD5、SHA-1。
消息摘要有兩個基本屬性:
(二)對字符串進行加密
????/**?*//**利用MD5進行加密
?????*?@param?str??待加密的字符串
?????*?@return??加密后的字符串
?????*?@throws?NoSuchAlgorithmException??沒有這種產(chǎn)生消息摘要的算法
?????*?@throws?UnsupportedEncodingException??
?????*/
????public?String?EncoderByMd5(String?str)?throws?NoSuchAlgorithmException,?UnsupportedEncodingException...{
????????//確定計算方法
????????MessageDigest?md5=MessageDigest.getInstance("MD5");
????????BASE64Encoder?base64en?=?new?BASE64Encoder();
????????//加密后的字符串
????????String?newstr=base64en.encode(md5.digest(str.getBytes("utf-8")));
????????return?newstr;
????} 調(diào)用函數(shù):
String str="0123456789"
System.out.println(EncoderByMd5(str));
輸出:eB5eJF1ptWaXm4bijSPyxw==
(三)驗證密碼是否正確
??? 因為MD5是基于消息摘要原理的,消息摘要的基本特征就是很難根據(jù)摘要推算出消息報文,因此要驗證密碼是否正確,就必須對輸入密碼(消息報文)重新計算其摘要,和數(shù)據(jù)庫中存儲的摘要進行對比(即數(shù)據(jù)庫中存儲的其實為用戶密碼的摘要),若兩個摘要相同,則說明密碼正確,不同,則說明密碼錯誤。
????/**?*//**判斷用戶密碼是否正確
?????*?@param?newpasswd??用戶輸入的密碼
?????*?@param?oldpasswd??數(shù)據(jù)庫中存儲的密碼--用戶密碼的摘要
?????*?@return
?????*?@throws?NoSuchAlgorithmException
?????*?@throws?UnsupportedEncodingException
?????*/
????public?boolean?checkpassword(String?newpasswd,String?oldpasswd)?throws?NoSuchAlgorithmException,?UnsupportedEncodingException...{
????????if(EncoderByMd5(newpasswd).equals(oldpasswd))
????????????return?true;
????????else
????????????return?false;
????}
參考資料
java上加密算法的實現(xiàn)用例
java加密和數(shù)字簽名編程快速入門
轉(zhuǎn)載于:https://www.cnblogs.com/hehe520/archive/2006/10/08/6330289.html
總結(jié)
以上是生活随笔為你收集整理的java中使用MD5进行计算摘要的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电子商务基础课件(10.25更新)
- 下一篇: 让文本输入框只能输入数字