本文代码实例是一个完整的java des加解密算法代码,可以直接使用,其中需要自己下载javabase64 jar包,添加到项目中。
package DESUtil;
import it.sauronsoftware.base64.Base64;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
public class DESUtil {
//private static final byte[] iv={0x12, 0x34, 0x56, 0x78, (byte) 0x90, (byte) 0xAB, (byte) 0xCD, (byte) 0xEF}; //向量
private static final byte[] defaultKey="YHns9243".getBytes(); //默认密钥
/**
* Description 根据键值进行加密
* @param data 加密的数据
* @param key 默认密钥
* @return
* @throws Exception
*/
public String encrypt(String param,String key) throws Exception {
// 从密钥数据创建DESKeySpec对象
DESKeySpec desKeySpec = new DESKeySpec(defaultKey);
byte[] data=param.getBytes("UTF-8");
// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
// 从向量生成IvParameterSpec
//IvParameterSpec ivp = new IvParameterSpec(key.getBytes());
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return new String(Base64.encode(cipher.doFinal(data)));
}
/**
* Description 根据键值进行解密
* @param data 加密的数据
* @param key 默认密钥
* @return
* @throws Exception
*/
public String decrypt(String param) throws Exception {
// 设置密钥参数
DESKeySpec desKeySpec = new DESKeySpec(defaultKey);
byte[] data=Base64.decode(param.getBytes()); //先转化为byte[]再base64解码
// 创建一个密钥工厂,然后用它把DESKeySpec转换成SecretKey对象
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
SecretKey secretKey = keyFactory.generateSecret(desKeySpec);
// 从向量生成IvParameterSpec
//IvParameterSpec ivp = new IvParameterSpec(key.getBytes());
Cipher cipher = Cipher.getInstance("DES");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return new String(cipher.doFinal(data),"UTF-8");
}
}