Java语言描述MD5加密工具类实例代码

编程中经常有用到MD5加密的情况,Java语言并没有像PHP一样提供原生的MD5加密字符串的函数,需要MD5加密的时候,往往需要自己写。

代码如下:

import java.security.MessageDigest;

public class MD5 {

//公盐

private static final String PUBLIC_SALT = "demo" ;

//十六进制下数字到字符的映射数组

private final static String[] hexDigits = {"0", "1", "2", "3", "4",

"5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};

/**

* 用户密码加密,盐值为 :私盐+公盐

* @param password 密码

* @param salt 私盐

* @return MD5加密字符串

*/

public static String encryptPassword(String password,String salt){

return encodeByMD5(PUBLIC_SALT+password+salt);

}

/**

* md5加密算法

* @param originString

* @return

*/

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();

}

}

return null;

}

/**

* 转换字节数组为十六进制字符串

* @param 字节数组

* @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];

}

}

总结

以上是 Java语言描述MD5加密工具类实例代码 的全部内容, 来源链接: utcz.com/z/336840.html

回到顶部