package com.csair.des;
import java.io.IOException;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
/**
* @Description: DES加密解密
* @author: ppt
* @date: 2014-3-7 下午3:28:23
*/
public class DESUtil {
private static final String Algorithm = "DESede";
private static final byte[] keyBytes ="This is a secret keynews".getBytes();
private static DESUtil encrypt = new DESUtil();
private DESUtil(){}
public static DESUtil getInstance(){
return encrypt;
}
private byte[] encryptMode(byte[] src) {
try {
SecretKey deskey = new SecretKeySpec(keyBytes, Algorithm);
Cipher c1 = Cipher.getInstance("DESede/ECB/PKCS5Padding");
c1.init(Cipher.ENCRYPT_MODE, deskey);
return c1.doFinal(src);
} catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
} catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
}
/**
* @Description: 解密
* @author: ppt
* @param src
* @throws Exception
* @return: String
*/
public String decrypt(byte[] src) throws Exception {
String srcString = new String(src,"UTF-8");
byte[] srcBytes = decryptMode(decode(srcString));
return new String(srcBytes,"UTF-8");
}
/**
* @Description: 加密
* @author: ppt
* @param src
* @throws Exception
* @return: byte[]
*/
public byte[] encrypt(String src) throws Exception{
String srcString = encode(encryptMode(src.getBytes("UTF-8")));
return srcString.getBytes("UTF-8");
}
private byte[] decryptMode(byte[] src) {
try {
SecretKey deskey = new SecretKeySpec(keyBytes, Algorithm);
Cipher c1 = Cipher.getInstance("DESede/ECB/PKCS5Padding");
c1.init(Cipher.DECRYPT_MODE, deskey);
return c1.doFinal(src);
} catch (java.security.NoSuchAlgorithmException e1) {
e1.printStackTrace();
} catch (javax.crypto.NoSuchPaddingException e2) {
e2.printStackTrace();
} catch (java.lang.Exception e3) {
e3.printStackTrace();
}
return null;
}
private String encode(byte[] bstr) {
return new sun.misc.BASE64Encoder().encode(bstr);
}
private byte[] decode(String str) {
byte[] bt = null;
try {
sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
bt = decoder.decodeBuffer(str);
} catch (IOException e) {
e.printStackTrace();
}
return bt;
}
public static void main(String...aa) throws Exception {
String str = "要加密的字符串要加密的字符串";
DESUtil d = DESUtil.getInstance();
String mi = new String(d.encrypt(str),"UTF-8");
String ming = d.decrypt(mi.getBytes("UTF-8"));
System.out.println("加密前:" + str);
System.out.println("加密后:" + mi);
System.out.println("解密后:" + ming);
}
}
DES加密算法JAVA实现
最新推荐文章于 2022-11-14 15:39:01 发布