?
class="java" name="code">package com.my.framework.util;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.security.spec.InvalidKeySpecException;
import java.util.HashMap;
import java.util.Map;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESKeySpec;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
/**
* 说明:DES加解密
* @version 1.0
*/
public class DESEncrypter {
/**
* 加密Clipher
*/
private Cipher enCipher;
/**
* 解密clipher
*/
private Cipher deCipher;
/**
* KEY
*/
private SecretKey key = null;
/**
*
*/
private static DESEncrypter instance;
public static synchronized DESEncrypter getInstance() throws InvalidKeyException,
NoSuchAlgorithmException, NoSuchPaddingException {
if (instance == null) {
instance = new DESEncrypter();
instance.init();
}
return instance;
}
public synchronized void init() throws NoSuchAlgorithmException,
NoSuchPaddingException, InvalidKeyException {
try {
SecureRandom sr = new SecureRandom();
DESKeySpec dks = new DESKeySpec("myKey".getBytes());
SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES");
key = keyFactory.generateSecret(dks);
} catch (InvalidKeySpecException e) {
e.printStackTrace();
}
enCipher = Cipher.getInstance("DES");
deCipher = Cipher.getInstance("DES");
enCipher.init(Cipher.ENCRYPT_MODE, key);
deCipher.init(Cipher.DECRYPT_MODE, key);
}
/**
* 加密
*
* @param str
* @return
* @throws UnsupportedEncodingException
* @throws IllegalBlockSizeException
* @throws BadPaddingException
*/
public String enCrypt(String str) throws UnsupportedEncodingException,
IllegalBlockSizeException, BadPaddingException {
byte[] utf8 = str.getBytes("UTF8");
byte[] enc = enCipher.doFinal(utf8);
return new BASE64Encoder().encode(enc);
}
/**
* des解密
*
* @param str
* @return
* @throws IOException
* @throws IllegalBlockSizeException
* @throws BadPaddingException
*/
public String deCrypt(String str) throws IOException,
IllegalBlockSizeException, BadPaddingException {
byte[] dec = new BASE64Decoder().decodeBuffer(str);
byte[] utf8 = deCipher.doFinal(dec);
return new String(utf8, "UTF8");
}
/**
* 生成KEY
*
* @return
*/
/* public static SecretKey generateSecretKey() {
SecretKey secretKey = null;
try {
secretKey = KeyGenerator.getInstance("DES").generateKey();
FileOutputStream keyFile = new FileOutputStream("d://rd_ds.key");
ObjectOutputStream keyObject = new ObjectOutputStream(keyFile);
keyObject.writeObject(secretKey);
keyFile.close();
} catch (Exception e) {
e.printStackTrace();
}
return secretKey;
}*/
public static void main(String[] args) throws InvalidKeyException,
NoSuchAlgorithmException, NoSuchPaddingException,
IllegalBlockSizeException, BadPaddingException, IOException {
// DESEncrypter.generateSecretKey();
DESEncrypter des = DESEncrypter.getInstance();
String crypt = des.enCrypt("clgl_test");
System.out.println(crypt);
String dc = des.deCrypt("irfiM+w48a88LPME0HnP3g==");
System.out.println(dc);
}
}
?
备注: DESKeySpec等类来源于jdk
?