package com.jspxcms.common.security; import org.apache.commons.lang3.StringUtils; import com.jspxcms.common.util.Encodes; /** * Hash证书加密 * * @author liufang * */ public abstract class HashCredentialsDigest implements CredentialsDigest { public static final int HASH_INTERATIONS = 1024; public String digest(String plainCredentials, byte[] salt) { if (StringUtils.isBlank(plainCredentials)) { return null; } byte[] hashPassword = digest(Cryptos.utf8encode(plainCredentials), salt); return Encodes.encodeHex(hashPassword); } public boolean matches(String credentials, String plainCredentials, byte[] salt) { if (StringUtils.isBlank(credentials) && StringUtils.isBlank(plainCredentials)) { return true; } return StringUtils.equals(credentials, digest(plainCredentials, salt)); } protected abstract byte[] digest(byte[] input, byte[] salt); }