pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.dzh</groupId>
<artifactId>encrypt-util</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>encrypt-util</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<dependencies>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
</dependencies>
</project>
下面的代码要用到我写的BASE64工具类。参考 《加密解密算法java实现(1)-BASE64》
下面的代码中的密钥可以自行更换,个数为8的倍数!
java代码如下:
package com.dzh.des;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import com.dzh.base64.BASE64Util;
/**
* DES加密解密
* 原文相同,密钥相同,DES加密后的密文是一样的
*/
public class DESUtil {
/**
* DES算法密钥
* 个数为8的倍数
*/
private static final byte[] DES_KEY = {125, -120, 52, 45, 98, -78, 85, -12, 45, -12, 69, 51, 30, -122, 45, -33};
private static final String ALGORITHM_DES = "DES";
private static final String TRANSFORMATION = "DES";
/**
* 加密
* @param source
* @return
* @throws Exception
*/
public static String encode(String source) throws Exception {
SecureRandom sr = new SecureRandom();//DES算法要求有一个可信任的随机数源
DESKeySpec desks = new DESKeySpec(DES_KEY);
SecretKeyFactory factory = SecretKeyFactory.getInstance(ALGORITHM_DES);//创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象
SecretKey secretKey = factory.generateSecret(desks);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);//加密对象
cipher.init(Cipher.ENCRYPT_MODE, secretKey, sr);
String result = BASE64Util.encodeByte(cipher.doFinal(source.getBytes()));//加密,并把字节数组编码成字符串
return result;
}
/**
* 解密
* @param source
* @return
* @throws Exception
*/
public static String decode(String source) throws Exception {
SecureRandom sr = new SecureRandom();//DES算法要求有一个可信任的随机数源
DESKeySpec desks = new DESKeySpec(DES_KEY);
SecretKeyFactory factory = SecretKeyFactory.getInstance(ALGORITHM_DES);//创建一个密匙工厂,然后用它把DESKeySpec转换成一个SecretKey对象
SecretKey secretKey = factory.generateSecret(desks);
Cipher cipher = Cipher.getInstance(TRANSFORMATION);//解密对象
cipher.init(Cipher.DECRYPT_MODE, secretKey, sr);
String result = new String(cipher.doFinal(BASE64Util.decodeToByte(source)));//把字符串解码为字节数组,并解密
return result;
}
/**
* 示例
* 支持中文 空格 字符
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
String source = "12dfefDKLJKLKL464d中文f465as43f1a3 f46e353D1F34&*^$E65F46EF43456abcd54as56f00ef";
String encodeData = DESUtil.encode(source);//先加密
System.out.println("加密后:\n" + encodeData);
String decodeData = DESUtil.decode(encodeData);//解密
System.out.println("解密后:\n" + decodeData);
System.out.println("解密后是否和原文相同:" + source.equals(decodeData));
}
}
按照示例代码使用即可