import java.security.*;
import java.io.*;
import javax.crypto.*;
import javax.crypto.spec.*;
public class Test {
/**
*
* @param strKey 加密密码
* @param content 待加密内容
* @return
* @throws Exception
*/
public byte[] encryKey(String strKey, String content) throws Exception{
System.out.println("需要加密的内容: " + content);
String encryAlgorithm = "AES";
System.out.println("strKey: " + strKey);
KeyGenerator keyGenerator = KeyGenerator.getInstance(encryAlgorithm);
strKey = strKey == null ? "" : strKey;
keyGenerator.init(128, new SecureRandom(strKey.getBytes("utf-8")));
SecretKey encryKey = keyGenerator.generateKey();
byte[] encryKeyByte = encryKey.getEncoded();
SecretKeySpec encrySpec = new SecretKeySpec(encryKeyByte, encryAlgorithm);
Cipher cipher = Cipher.getInstance(encryAlgorithm);
cipher.init(Cipher.ENCRYPT_MODE, encrySpec);
byte[] encryptData = cipher.doFinal(content.getBytes("utf-8"));
StringBuffer encryMsisdn = new StringBuffer();
for (int i = 0; i < encryptData.length; i++) {
String hex = Integer.toHexString(encryptData[i] & 0xFF);
if (hex.length() == 1) {
hex = '0' + hex;
}
encryMsisdn.append(hex.toUpperCase());
}
System.out.println("test by xiao after: " + encryMsisdn);
return encryptData;
}
/**
*
* @param strKey 解密密码
* @param content 待解密内容
*/
public void decodeKey(String strKey, byte[] content) {
String decAlgorithm = "AES";
KeyGenerator decKeyGenerator;
System.out.println("解密密码: " + strKey);
try {
decKeyGenerator = KeyGenerator.getInstance(decAlgorithm);
strKey = strKey == null ? "" : strKey;
decKeyGenerator.init(128, new SecureRandom(strKey.getBytes("utf-8")));
SecretKey decKey = decKeyGenerator.generateKey();
byte[] decKeyByte = decKey.getEncoded();
SecretKeySpec decSpec = new SecretKeySpec(decKeyByte, decAlgorithm);
Cipher decCipher = Cipher.getInstance(decAlgorithm);
decCipher.init(Cipher.DECRYPT_MODE, decSpec);
byte[] decData = decCipher.doFinal(content);
System.out.println("解密后字符串:" + new String(decData));
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}catch(UnsupportedEncodingException e){
e.printStackTrace();
}catch(NoSuchPaddingException e){
e.printStackTrace();
}catch(InvalidKeyException e){
e.printStackTrace();
}catch(IllegalBlockSizeException e){
e.printStackTrace();
}catch(BadPaddingException e){
e.printStackTrace();
}finally{
}
System.out.println("done....");
}
public static void main(String[] args) throws Exception {
Test des = new Test();
//加密
byte[] encryData = des.encryKey(null, "1234588一eee");
//解密
des.decodeKey(null, encryData);
}
}