package com.fourinone;
import java.security.*;
import javax.crypto.*;
import javax.crypto.spec.*;
import java.io.*;
import java.util.*;
public class DESBean
{
private SecretKey deskey;
private Cipher cipher;
private String algorithm = "DES";
private String initKeyData = "tianxingjian";
public DESBean()
{
init();
}
public void init()
{
try
{
/*
ObjectInputStream keyIn = new ObjectInputStream(new FileInputStream("secret.key"));
deskey = (SecretKey)keyIn.readObject();
keyIn.close();
*/
byte[] keyData = initKeyData.getBytes();
DESKeySpec keySpec = new DESKeySpec(keyData);
SecretKeyFactory skf = SecretKeyFactory.getInstance(algorithm);
deskey = skf.generateSecret(keySpec);
cipher = Cipher.getInstance(algorithm);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public String getEncryptor(String str)
{
String encryptorStr = "";
try
{
//init
cipher.init(Cipher.ENCRYPT_MODE, deskey);
//Encryptor
byte[] cipherByte = cipher.doFinal(str.getBytes());
//turn String
encryptorStr = byte2hex(cipherByte);
}
catch(Exception e)
{
e.printStackTrace();
}
return encryptorStr;
}
public String getDecryptor(String str)
{
String decryptorStr = "";
try
{
//init
cipher.init(Cipher.DECRYPT_MODE, deskey);
//parse encryptorStr to byte[]
byte[] outt = hex2byte(str);
//Encryptor
byte[] cipherByte = cipher.doFinal(outt);
//turn String
decryptorStr = new String(cipherByte);
}
catch(Exception e)
{
e.printStackTrace();
}
return decryptorStr;
}
public String byte2hex(byte[] b)
{
StringBuffer hs = new StringBuffer("");
String stmp = "";
for (int n = 0; n < b.length; n++) {
stmp = (Integer.toHexString(b[n] & 0xFF));
if (stmp.length() == 1) {
hs.append("0" + stmp);
} else {
hs.append(stmp);
}
}
return hs.toString().toUpperCase();
}
public byte[] hex2byte(String hex)
{
int len = hex.length();
if ( (len % 2) != 0) {
return null;
}
int size = len / 2;
byte[] b = new byte[size];
for (int i = 0; i < size; i++) {
b[i] = (Integer.decode("0X" + hex.substring(i * 2, i * 2 + 2))).
byteValue();
}
return b;
}
public static void main(String[] args)
{
try
{
DESBean des = new DESBean();
String s = "\u5929\u884C\u952Eabcd888888";
System.out.println(s);
String sEnc = des.getEncryptor(s);
System.out.println(sEnc);
String sDec = des.getDecryptor(sEnc);
System.out.println(sDec);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}