MD5加密!对密码进行MD5加密和验证

来源:互联网 发布:safari for windows 编辑:程序博客网 时间:2024/06/05 07:04

做项目为了用户登录的安全性,一般都会对用户的登录密码进行加密,加密的方式有很多种,下面是我在项目中用到的也是最常用的MD5加密方式,自己把它写成了一个工具类,附详细注释,代码如下:

package com.tx.mm.util;

import java.security.MessageDigest;
import org.apache.log4j.Logger;

/**
 * 對密碼進行加密和驗證
 *
 */
public class CipherUtil {
private final static Logger log = Logger.getLogger(CipherUtil.class);
//十六進制下數字到字符的映射陣列
private final static String[] hexDigits = {"0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"};

/**inputString 加密
* @param inputString 要進行加密的輸入字符串
* @return 返回一個MD5加密后的字符串
*/
public static String generatePassword(String inputString){
return encodeByMD5(inputString);
}

/**
* 驗證輸入的密碼是否正確
* @param password 加密后的密碼
* @param inputString 輸入的字符串
* @return 驗證結果,true:正確  flase:錯誤
*/
public static boolean validatePassword(String password,String inputString){
if(password.equals(encodeByMD5(inputString))){
return true;
}else{
return false;
}

}

//對字符串進行MD5 加密
private static String encodeByMD5(String originString){
if(originString != null){
try{
//創建具有指定算法名稱的信息摘要
MessageDigest md = MessageDigest.getInstance("MD5");
//使用指定的字節數組隊摘要進行最後更新,然後完成摘要計算
byte[] results = md.digest(originString.getBytes());
//將得到的字節數組變成字符串返回
String resultString = byteArrayToHexString(results);
return resultString.toUpperCase();

}catch(Exception ex){
ex.printStackTrace();
log.debug(ex.getMessage());
}
}
return null;
}

/**
* 轉換字節數組為十六進制字符串
* @param b 字節數組
* @return 十六進制字符串
*/
private static String byteArrayToHexString(byte[] b){
StringBuffer resultSb = new StringBuffer();
for(int i = 0; i < b.length; i++){
resultSb.append(byteToHexString(b[i]));
}
return resultSb.toString();
}

//將一個字節轉化成十六進制形式的字符串
private static String byteToHexString(byte b){
int n = b;
if(n < 0) n = 256+n;
int d1 = n / 16;
int d2 = n % 16;
return hexDigits[d1] + hexDigits[d2];

}
}
原创粉丝点击