package com.sunxung.factoring.component.util;

import jodd.util.PBKDF2Hash;

/**
 * 密码辅助类
 */
public class PasswordUtil {

    /** 盐值字节数 */
    private static int saltBytes = 8;
    /** 密文字节数 */
    private static int hashBytes = 8;
    /** 迭代运算数 */
    private static int iterations = 36;
    private static PBKDF2Hash PBKDF2 = new PBKDF2Hash(saltBytes, hashBytes, iterations);

    /**
     * 明文转密文
     * 
     * @param password 明文
     * @return 密文
     */
    public static String createHash(String password) {
        String hash = PBKDF2.createHash(password);
        hash = hash.substring(3).replaceFirst(":", "");
        return hash;
    }

    /**
     * 密码验证
     * 
     * @param password 明文
     * @param hash 密文
     * @return 相等返回true，否侧返回false
     */
    public static boolean validatePassword(String password, String hash) {
        if (StringUtil.isEmpty(password) || StringUtil.isEmpty(hash)) {
            return false;
        }
        StringBuffer sb = new StringBuffer(hash);
        sb.insert(16, ":").insert(0, "36:");
        return PBKDF2.validatePassword(password, sb.toString());
    }
}
