SM3.java 1.67 KB
/**
 * @author Liulu
 * @time 2018-06-05
 * @description: SM3
 */
package weaver.authentication.handler.encoder;

import cfca.sadk.util.HashUtil;

public class SM3 {

    /**
     * 无盐加密接口
     *
     * @param infostr
     * @return
     */
    public String getEncrypt(String infostr) {
        return getEncrypt(infostr, null);
    }

    /**
     * 加盐加密接口
     *
     * @param infostr
     * @param salt
     * @return
     */
    public String getEncrypt(String infostr, String salt) { //客户需求的加密方式
        return getEncrypt(infostr, salt, "UTF-8");
    }


    /**
     * 可手动指定加密类型加密接口
     *
     * @param infostr
     * @param salt
     * @param encoding
     * @return
     */
    public String getEncrypt(String infostr, String salt, String encoding) //客户需求的加密方式
    {
        try {
            byte[] result = null;
            if (encoding == null || "".equals(encoding)) {
                encoding = "UTF-8";
            }
            if (salt != null && !"".equals(salt)) {
                infostr = infostr + salt;
            }
            try {
                byte[] sourceData = infostr.getBytes(encoding);// 获得hash原文
                byte[] hash = HashUtil.SM2HashMessageByBCWithoutZValue(sourceData);
                result = cfca.sadk.util.Base64.encode(hash);// 进行BASE64编码,如果是进行比较的话,可以直接使用二进制值进行比较。
            } catch (Exception e) {
                e.printStackTrace();
            }
            return new String(result, encoding);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

}