密码加密与解密
项目开发中,一些敏感数据需要进行加密处理,用的时候进行解密处理,会用到很多种加解密方式,今天介绍: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);
}
}
二、使用方法
直接复制以上代码即可使用
本文来自博客园,作者:青喺半掩眉砂,转载请注明原文链接:https://www.cnblogs.com/xiaoguo-java/p/17882040.html