JAVA工具【五】DESUtils加密工具

1、加密

public class DESUtils {

    private static final String DES_NAME = "DES";
    private static final String CHARSET = "UTF-8";
    
    private DESUtils() {
    }

    // ===============================加密 begin

    public static byte[] encrypt(String source, String key) throws Exception {
        return encrypt(source.getBytes(CHARSET), key);
    }

    public static byte[] encrypt(byte[] source, String key) throws Exception {
        byte[] encodeByte = encryptOrDecrypt(Cipher.ENCRYPT_MODE, source, key);
        return encodeByte;
    }

    public static String encryptToHexString(byte[] source, String key) throws Exception {
        byte[] encodeByte = encrypt(source, key);
        return HexUtils.toHexString(encodeByte);
    }

    public static String encryptToHexString(String source, String key) throws Exception {
        byte[] encodeByte = encrypt(source, key);
        return HexUtils.toHexString(encodeByte);
    }

    public static String encryptToBase64String(String source, String key) throws Exception {
        byte[] encodeByte = encrypt(source, key);
        return Base64.getEncoder().encodeToString(encodeByte);
    }
    // ===============================加密 end

    // ===============================解密 begin
    /**
     * 解密
     * @param source
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] decrypt(byte[] source, String key) throws Exception {
        byte[] decodeByte = encryptOrDecrypt(Cipher.DECRYPT_MODE, source, key);
        return decodeByte;
    }

    /**
     *
     * @param source 16进制
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] decryptHex(String source, String key) throws Exception {
        return decrypt(HexUtils.fromHexString(source), key);
    }

    public static byte[] decryptBase64(String source, String key) throws Exception {
        return decrypt(Base64.getDecoder().decode(source), key);
    }

    public static String decryptToString(byte[] source, String key) throws Exception {
        byte[] decodeByte = decrypt(source, key);
        String decodeStr = new String(decodeByte, CHARSET);
        return decodeStr;
    }

    /**
     * @param source 16进制
     * @param key
     * @return
     * @throws Exception
     */
    public static String decryptHexToString(String source, String key) throws Exception {
        byte[] decodeByte = decryptHex(source, key);
        String decodeStr = new String(decodeByte, CHARSET);
        return decodeStr;
    }

    public static String decryptBase64ToString(String source, String key) throws Exception {
        byte[] decodeByte = decryptBase64(source, key);
        String decodeStr = new String(decodeByte, CHARSET);
        return decodeStr;
    }

    // ===============================解密 end

    private static byte[] encryptOrDecrypt(int mode, byte[] byteContent, String key) throws Exception {
        // DES算法要求有一个可信任的随机数源
        SecureRandom random = new SecureRandom();
        // 创建一个DESKeySpec对象
        DESKeySpec desKey = new DESKeySpec(key.getBytes());
        // 创建一个密匙工厂
        SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES_NAME);//返回实现指定转换的 Cipher 对象
        // 将DESKeySpec对象转换成SecretKey对象
        SecretKey securekey = keyFactory.generateSecret(desKey);
        // Cipher对象实际完成解密操作
        Cipher cipher = Cipher.getInstance(DES_NAME);
        // 用密匙初始化Cipher对象
        cipher.init(mode, securekey, random);
        // 真正开始解密操作
        return cipher.doFinal(byteContent);
    }
}

 

2、用途

DESUtils.encryptToBase64String(text, secret);

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值