Java MD5明文加密及增加salt值 - 假的攻城狮 - 博客园

public class MD5Util {

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;  
    int d1 = n / 16;  
    int d2 = n % 16;  
    return hexDigits\[d1\] + hexDigits\[d2\];  
}  

/**  
 \* 返回大写MD5  
 *  
 \* @param origin 要加密的源字符  
 \* @param charsetname 加密算法使用的字符集  
 \* @return  
 */  
//MessageDigest 对象开始被初始化。该对象通过使用 update()方法处理数据。任何时候都可以调用 reset()方法重置摘要。  
// 一旦所有需要更新的数据都已经被更新了,应该调用digest() 方法之一完成哈希计算。  
//  
private static String MD5Encode(String origin, String charsetname) {  
    String resultString = null;  
    try {  
        resultString = new String(origin);  
        MessageDigest md = MessageDigest.getInstance("MD5");//MessageDigest 类为应用程序提供信息摘要算法的功能,getInstance返回实现指定摘要算法的 MessageDigest 对象。  
        //如果不传入字符集  
        if (charsetname == null || "".equals(charsetname))  
            resultString = byteArrayToHexString(md.digest(resultString.getBytes()));  
        else  
            resultString = byteArrayToHexString(md.digest(resultString.getBytes(charsetname)));  
    } catch (Exception exception) {  
    }  
    return resultString.toUpperCase();  
}  

public static String MD5EncodeUtf8(String origin) {  
    origin = origin + PropertiesUtil.getProperty("password.salt", "");  
    return MD5Encode(origin, "utf-8");  
}  


private static final String hexDigits\[\] = {"0", "1", "2", "3", "4", "5",  
        "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"};  

}


Original url: Access
Created at: 2019-05-16 15:36:49
Category: default
Tags: none

请先后发表评论
  • 最新评论
  • 总共0条评论