一、项目DES加密解密
创建一个springboot项目 ,项目结构如图
然后创建一个名为utils的软件包
然后创建一个名为DesUtils的类
具体代码如下:
public class DesUtils {
/**
* 用于加密解密的同一把密钥
*/
public static final String ORIGIN_KEY = "M68O5A";
/**
* 加密算法
*/
public static String desEncript(String clearText, String originKey) throws Exception {
Cipher cipher = Cipher.getInstance("DES"); /*提供加密的方式:DES*/
SecretKeySpec key = getKey(originKey); /*对密钥进行操作,产生16个48位长的子密钥*/
cipher.init(Cipher.ENCRYPT_MODE, key); /*初始化cipher,选定模式,这里为加密模式,并同时传入密钥*/
byte[] doFinal = cipher.doFinal(clearText.getBytes()); /*开始加密操作*/
String encode = Base64.encodeBase64String(doFinal); /*对加密后的数据按照Base64进行编码*/
return encode;
}
/**
* 解密算法
*/
public static String desDecript(String cipherText, String originKey) throws Exception {
Cipher cipher = Cipher.getInstance("DES"); /*初始化加密方式*/
Key key = getKey(originKey); /*获取密钥*/
cipher.init(Cipher.DECRYPT_MODE, key); /*初始化操作方式*/
byte[] decode = Base64.decodeBase64(cipherText); /*按照Base64解码*/
byte[] doFinal = cipher.doFinal(decode); /*执行解码操作*/
return new String(doFinal); /*转换成相应字符串并返回*/
}
/**
* 获取密钥算法
*/
public static SecretKeySpec getKey(String originKey) {
byte[] buffer = new byte[8];
byte[] originBytes = originKey.getBytes();
/**
* 防止输入的密钥长度超过64位
*/
for (int i = 0; i < 8 && i < originBytes.length; i++) {
buffer[i] = originBytes[i]; /*如果originBytes不足8,buffer剩余的补零*/
}
SecretKeySpec key = new SecretKeySpec(buffer, "DES"); /*第一个参数是密钥字节数组,第二个参数是加密方式*/
return key; /*返回操作之后得到的密钥*/
}
}
ORIGIN_KEY :加密和解密的密钥 ,要用该密钥来对应加密解密的数据,同志们自行设置,注意是8位字符,数字代表1位,字母代表2位;超过则取前8位字符,未达到8位以0补充
二、使用DES加密和解密
String name="Junny";
System.out.println("original:"+name);
String desName=DesUtils.desEncript(name,DesUtils.ORIGIN_KEY);
System.out.println("Encode:"+ desName);
System.out.println("Decode:"+DesUtils.desDecript(desName,DesUtils.ORIGIN_KEY));