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

做项目为了用户登录的安全性,一般都会对用户的登录密码进行加密,加密的方式有很多种,下面是我在项目中用到的也是最常用的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];

}
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值