commons-codec-1.5.jar包下已经实现了有常见的加密算法,下面是几种常见的加密算法实现,使用很方便,很简单!
这个连接是DigestUtils方法的使用API文档:http://commons.apache.org/proper/commons-codec/apidocs/org/apache/commons/codec/digest/DigestUtils.html
import java.security.NoSuchAlgorithmException;
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;
}
}
}