All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.featherfly.common.algorithm.HMACSM3 Maven / Gradle / Ivy

//package cn.featherfly.common.algorithm;
//
//import java.security.MessageDigest;
//import java.util.Arrays;
//
//import org.bouncycastle.crypto.digests.SM3Digest;
//import org.bouncycastle.crypto.macs.HMac;
//import org.bouncycastle.crypto.params.KeyParameter;
//import org.bouncycastle.pqc.math.linearalgebra.ByteUtils;
//
///**
// * MD5 algorithm
// *
// * @author zhongj
// */
//public abstract class HMACSM3 extends Algorithm {
//
//    /**
//     * sm3 encrypt
//     *
//     * @param data data to encrypt
//     * @return encrypted result with byte[]
//     * @throws AlgorithmException
//     */
//    public static byte[] encrypt(byte[] data) {
//        return messageDigestEncode(data, MessageDigestAlgorithms.SM3);
//    }
//
//    /**
//     * sm3 encrypt
//     *
//     * @param data data to encrypt
//     * @return encrypted result with String
//     * @throws AlgorithmException
//     */
//    public static String encrypt(String data) {
//        return toHexString(encrypt(getBytes(data)));
//    }
//
//    /**
//     * sm3 encrypt
//     *
//     * @param data data to encrypt
//     * @param key  encrypt key
//     * @return encrypted result with byte[]
//     * @throws Exception
//     */
//    public static byte[] encrypt(byte[] data, byte[] key) throws Exception {
//        KeyParameter keyParameter = new KeyParameter(key);
//        SM3Digest sm3 = new SM3Digest();
//        HMac hMac = new HMac(sm3);
//        hMac.init(keyParameter);
//        hMac.update(data, 0, data.length);
//        byte[] result = new byte[hMac.getMacSize()];
//        hMac.doFinal(result, 0);
//        return result;
//    }
//
//    /**
//     * sm3 encrypt
//     *
//     * @param data data to encrypt
//     * @param key  encrypt key
//     * @return encrypted result with String
//     * @throws Exception
//     */
//    public static String encrypt(String data, String key) throws Exception {
//        return toHexString(encrypt(getBytes(data), getBytes(key)));
//
//    }
//
//    /**
//     * 校验源数据与加密数据是否一致
//     *
//     * @param src       源数据
//     * @param sm3HexStr 16进制的加密数据
//     * @return
//     * @throws Exception
//     */
//    public static boolean verify(String src, String sm3HexStr) throws Exception {
//        byte[] sm3HashCode = ByteUtils.fromHexString(sm3HexStr);
//        byte[] newHashCode = getEncryptBySrcByte(src.getBytes(ENCODING));
//        return Arrays.equals(newHashCode, sm3HashCode);
//    }
//
//    /**
//     * 利用源数据+密钥校验与密文是否一致
//     *
//     * @param src       源数据
//     * @param key       密钥
//     * @param sm3HexStr 密文
//     * @return
//     * @throws Exception
//     */
//    public static boolean verify(String src, String key, String sm3HexStr) throws Exception {
//        byte[] sm3HashCode = ByteUtils.fromHexString(sm3HexStr);
//        byte[] newHashCode = getEncryptByKey(src, key);
//        return Arrays.equals(newHashCode, sm3HashCode);
//    }
//
//    /**
//     * 测试
//     *
//     * @param args
//     * @throws Exception
//     */
//    public static void main(String[] args) throws Exception {
//        MessageDigest md = MessageDigest.getInstance("SM3");
//        System.out.println(md);
//        //        String srcStr = "春宵一刻值千金,花有清香月有阴;歌管楼台声细细,秋千院落夜沉沉!";
//        //        String key = "春宵";
//        //        // ******************************自定义密钥加密及校验*****************************************
//        //        String hexStrByKey = SM3.encrypt(srcStr, key);
//        //        System.out.println("        带密钥加密后的密文:" + hexStrByKey);
//        //
//        //        System.out.println("明文(带密钥)与密文校验结果:" + SM3.verify(srcStr, key, hexStrByKey));
//        //        System.out.println(
//        //                "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
//        //        // ******************************无密钥的加密及校验******************************************
//        //        String hexStrNoKey = SM3.encrypt(srcStr);
//        //        System.out.println("        不带密钥加密后的密文:" + hexStrNoKey);
//        //
//        //        System.out.println("明文(不带密钥)与密文校验结果:" + SM3.verify(srcStr, hexStrNoKey));
//
//    }
//
//}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy