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

spring.turbo.util.DigestUtils Maven / Gradle / Ivy

package spring.turbo.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import static java.nio.charset.StandardCharsets.UTF_8;

/**
 * 信息摘要工具
 *
 * @author 应卓
 * @see org.springframework.util.DigestUtils
 * @since 3.3.0
 */
public final class DigestUtils {

    public static final String ALG_MD2 = "MD2";
    public static final String ALG_MD5 = "MD5";
    public static final String ALG_SHA_1 = "SHA-1";
    public static final String ALG_SHA_256 = "SHA-256";
    public static final String ALG_SHA_384 = "SHA-384";
    public static final String ALG_SHA_512 = "SHA-512";

    /**
     * 私有构造方法
     */
    private DigestUtils() {
    }

    /**
     * md2
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static byte[] md2(final byte[] data) {
        try {
            var digest = MessageDigest.getInstance(ALG_MD2);
            return digest.digest(data);
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalArgumentException(e.getMessage(), e);
        }
    }

    /**
     * md2
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static String md2Hex(final String data) {
        Asserts.notNull(data);
        return HexUtils.encodeToString(md2(data.getBytes(UTF_8)));
    }

    /**
     * md5
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static byte[] md5(final byte[] data) {
        try {
            var digest = MessageDigest.getInstance(ALG_MD5);
            return digest.digest(data);
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalArgumentException(e.getMessage(), e);
        }
    }

    /**
     * md5
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static String md5Hex(final String data) {
        Asserts.notNull(data);
        return HexUtils.encodeToString(md5(data.getBytes(UTF_8)));
    }

    /**
     * SHA-1
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static byte[] sha1(final byte[] data) {
        try {
            var digest = MessageDigest.getInstance(ALG_SHA_1);
            return digest.digest(data);
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalArgumentException(e.getMessage(), e);
        }
    }

    /**
     * SHA-1
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static String sha1Hex(final String data) {
        Asserts.notNull(data);
        return HexUtils.encodeToString(sha1(data.getBytes(UTF_8)));
    }

    /**
     * SHA-256
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static byte[] sha256(final byte[] data) {
        try {
            var digest = MessageDigest.getInstance(ALG_SHA_256);
            return digest.digest(data);
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalArgumentException(e.getMessage(), e);
        }
    }

    /**
     * SHA-256
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static String sha256Hex(final String data) {
        Asserts.notNull(data);
        return HexUtils.encodeToString(sha256(data.getBytes(UTF_8)));
    }

    /**
     * SHA-384
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static byte[] sha384(final byte[] data) {
        try {
            var digest = MessageDigest.getInstance(ALG_SHA_384);
            return digest.digest(data);
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalArgumentException(e.getMessage(), e);
        }
    }

    /**
     * SHA-384
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static String sha384Hex(final String data) {
        Asserts.notNull(data);
        return HexUtils.encodeToString(sha384(data.getBytes(UTF_8)));
    }

    /**
     * SHA-512
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static byte[] sha512(final byte[] data) {
        try {
            var digest = MessageDigest.getInstance(ALG_SHA_512);
            return digest.digest(data);
        } catch (NoSuchAlgorithmException e) {
            throw new IllegalArgumentException(e.getMessage(), e);
        }
    }

    /**
     * SHA-512
     *
     * @param data 数据
     * @return 信息摘要
     */
    public static String sha512Hex(final String data) {
        Asserts.notNull(data);
        return HexUtils.encodeToString(sha512(data.getBytes(UTF_8)));
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy