import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import org.apache.log4j.Logger;
public class PassWordDigester {
private static final Logger logger = Logger.getLogger(PassWordDigester.class);
private static final String ALGORITHM_MD5 = "MD5";
public static String getPassMD5(String pass) {
String keys = null;
try {
MessageDigest md = MessageDigest.getInstance(ALGORITHM_MD5);
if (pass == null) pass = "";
byte[] bPass = pass.getBytes("UTF-8");
md.update(bPass);
keys = bytesToHexString(md.digest());
} catch (NoSuchAlgorithmException e) {
logger.error("No MD5 algorithm!", e);
} catch (Exception e) {
logger.error("Encoding error", e);
}
return keys;
}
private static final String bytesToHexString(byte[] bArray) {
StringBuffer sb = new StringBuffer(bArray.length * 2);
for (byte b : bArray) {
String hex = Integer.toHexString(0xFF & b);
if (hex.length() == 1) sb.append('0');
sb.append(hex.toUpperCase());
}
return sb.toString();
}
public static void main(String[] args) {
System.out.println(getPassMD5("qazwsx")); // 測試輸出
}
}
MD5 已不適合高安全性場景(碰撞攻擊、彩虹表),建議生產環境改用 BCrypt、PBKDF2、Argon2 等慢雜湊算法並加鹽。
出處:bianceng.cn