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

com.arsframework.util.Secrets Maven / Gradle / Ivy

package com.arsframework.util;

import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.DESKeySpec;
import javax.crypto.spec.SecretKeySpec;

import com.arsframework.annotation.Nonnull;
import org.apache.commons.codec.binary.Base64;

/**
 * 数据加解密处理工具类
 *
 * @author yongqiang.wu
 */
public abstract class Secrets {
    /**
     * 构建DES密码处理器
     *
     * @param key  密钥
     * @param mode 处理类型(加密/解密)
     * @return 密码处理器
     * @throws GeneralSecurityException 密码处理异常
     */
    @Nonnull
    public static Cipher buildDESCipher(String key, int mode) throws GeneralSecurityException {
        DESKeySpec spec = new DESKeySpec(key.getBytes());
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
        SecretKey secretKey = keyFactory.generateSecret(spec);
        Cipher cipher = Cipher.getInstance("DES");
        cipher.init(mode, secretKey, new SecureRandom());
        return cipher;
    }

    /**
     * 构建AES密码处理器
     *
     * @param key  密钥
     * @param mode 处理类型(加密/解密)
     * @return 密码处理器
     * @throws GeneralSecurityException 密码处理异常
     */
    @Nonnull
    public static Cipher buildAESCipher(String key, int mode) throws GeneralSecurityException {
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(128, new SecureRandom(key.getBytes()));
        SecretKeySpec secretKeySpec = new SecretKeySpec(keyGenerator.generateKey().getEncoded(), "AES");
        Cipher cipher = Cipher.getInstance("AES");
        cipher.init(mode, secretKeySpec);
        return cipher;
    }

    /**
     * MD5加密
     *
     * @param source 明文
     * @return 密文
     * @throws GeneralSecurityException 加密异常
     */
    @Nonnull
    public static String md5(String source) throws GeneralSecurityException {
        MessageDigest digest = MessageDigest.getInstance("MD5");
        digest.update(source.getBytes());
        return Base64.encodeBase64String(digest.digest());
    }

    /**
     * SHA-1加密
     *
     * @param source 明文
     * @return 密文
     * @throws GeneralSecurityException 加密异常
     */
    @Nonnull
    public static String sha1(String source) throws GeneralSecurityException {
        MessageDigest digest = MessageDigest.getInstance("SHA-1");
        digest.update(source.getBytes());
        return Base64.encodeBase64String(digest.digest());
    }

    /**
     * DES加密
     *
     * @param source 明文
     * @param key    密钥
     * @return 密文
     * @throws GeneralSecurityException 加密异常
     */
    @Nonnull
    public static String des(String source, String key) throws GeneralSecurityException {
        Cipher cipher = buildDESCipher(key, Cipher.ENCRYPT_MODE);
        return Base64.encodeBase64String(cipher.doFinal(source.getBytes()));
    }

    /**
     * DES解密
     *
     * @param source 密文
     * @param key    秘钥
     * @return 明文
     * @throws GeneralSecurityException 解密异常
     */
    @Nonnull
    public static String undes(String source, String key) throws GeneralSecurityException {
        Cipher cipher = buildDESCipher(key, Cipher.DECRYPT_MODE);
        return new String(cipher.doFinal(Base64.decodeBase64(source)));
    }

    /**
     * AES加密
     *
     * @param source 数据源
     * @param key    秘钥
     * @return 密文(base64)
     * @throws GeneralSecurityException 加密异常
     */
    @Nonnull
    public static String aes(String source, String key) throws GeneralSecurityException {
        Cipher cipher = buildAESCipher(key, Cipher.ENCRYPT_MODE);
        return Base64.encodeBase64String(cipher.doFinal(source.getBytes()));
    }

    /**
     * AES解密
     *
     * @param source 数据源(base64)
     * @param key    秘钥
     * @return 明文
     * @throws GeneralSecurityException 解密异常
     */
    @Nonnull
    public static String unaes(String source, String key) throws GeneralSecurityException {
        Cipher cipher = buildAESCipher(key, Cipher.DECRYPT_MODE);
        return new String(cipher.doFinal(Base64.decodeBase64(source)));
    }

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy