常見加密演算法java實現(MD5,SHA-256,SHA-512)
阿新 • • 發佈:2019-02-06
import org.apache.commons.codec.digest.DigestUtils;
public class PasswordEncode {
private static String pwdAlgorithm = "MD5";
/**
* 加密密碼演算法
*
* @param pass
* 需要加密的原始密碼
* @param algorithm
* 加密演算法名稱
* @return 加密後的密碼
* @throws NoSuchAlgorithmException
* 當加密演算法不可用時丟擲此異常
*/
public static String digestString(String password, String alg) throws NoSuchAlgorithmException {
String newPass;
if (alg == null || alg.equals("MD5")) {
newPass = DigestUtils.md5Hex(password);
} else if (alg.equals("NONE")) {
newPass = "password";
} else if (alg.equals("SHA-256")) {
newPass = DigestUtils.sha256Hex(password);
} else if (alg.equals("SHA-512")) {
newPass = DigestUtils.sha512Hex(password);
} else {
newPass = DigestUtils.shaHex(password);
}
return newPass;
}
/**
* 加密密碼演算法
*
* @param newPass
* 未加密的密碼
* @param algorithm
* 加密演算法
* @return String 加密後的密碼
*/
public static String setPassword(String newPass) {
try {
if (newPass != null && !"".equals(newPass)) {
return digestString(newPass, pwdAlgorithm);
} else{
return null;
}
} catch (NoSuchAlgorithmException nsae) {
throw new RuntimeException("Security error: " + nsae);
}
}
/**
* 判斷密碼是不是相等
*
* @param beforePwd
* 要判斷的密碼
* @param afterPwd
* 加密後的資料庫密碼
* @return Boolean true 密碼相等
*/
public static boolean isPasswordEnable(String beforePwd, String afterPwd) {
if (beforePwd != null && !"".equals(beforePwd)) {
String password = setPassword(beforePwd);
return afterPwd.equals(password);
} else{
return false;
}
}
}