常见加密算法java实现(MD5,SHA-256,SHA-512)

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;
        }
    }
}


你可能感兴趣的:(Java语言基础)