密码加密与解密

发布时间 2023-12-07 15:05:46作者: 青喺半掩眉砂

项目开发中,一些敏感数据需要进行加密处理,用的时候进行解密处理,会用到很多种加解密方式,今天介绍:DES对称加密与解密

一、代码如下:

package com.pasture.pastureService.common.utils;


import cn.hutool.core.codec.Base64;

import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;

/**
 * @Classname DESPasswordUtils
 * @Description DES加密解密工具类
 * @Date 2022/3/7 12:00
 * @Created by 小郭
 */
public class DESPasswordUtils {
    /**
     * DES加密+解密
     * @param text 文本内容
     * @param mode true-加密   false-解密
     * @return
     * @throws NoSuchAlgorithmException
     * @throws NoSuchPaddingException
     * @throws InvalidKeyException
     * @throws IllegalBlockSizeException
     * @throws BadPaddingException
     * @throws InvalidKeyException
     */
    public static String extracted(String text, boolean mode) throws Exception {
        String key = "12345678";//des必须8字节
        // 算法/模式/填充  默认 DES/ECB/PKCS5Padding
        String transformation = "DES";
        Cipher cipher = Cipher.getInstance(transformation);
        //    key          与给定的密钥内容相关联的密钥算法的名称
        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), transformation);
        //Cipher 的操作模式,加密模式:ENCRYPT_MODE、 解密模式:DECRYPT_MODE、包装模式:WRAP_MODE 或 解包装:UNWRAP_MODE)
        cipher.init(mode ? Cipher.ENCRYPT_MODE : Cipher.DECRYPT_MODE, secretKeySpec);
        byte[] bytes = cipher.doFinal(mode ? text.getBytes(StandardCharsets.UTF_8) : Base64.decode(text));
        return mode ? Base64.encode(bytes) : new String(bytes);
    }



    public static void main(String[] args) throws Exception {
        String text = "禾文科技你好,你好这个世界";
        String extracted = extracted(text, true);
        System.out.println("DES加密:" + extracted);
        String extracted1 = extracted(extracted, false);
        System.out.println("解密:" + extracted1);
    }

}

二、使用方法

直接复制以上代码即可使用