package com.credli
import java.io.IOException;
import java.security.SecureRandom;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import sun.misc.ba
import sun.misc.ba
public class AES {
private static ba
private static ba
private static byte[] encrypt(byte[] byteContent, byte[] password)
throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(password);
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(1, key);
byte[] result = cipher.doFinal(byteContent);
return result;
}
private static byte[] decrypt(byte[] content, byte[] password)
throws Exception {
KeyGenerator kgen = KeyGenerator.getInstance("AES");
SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG");
secureRandom.setSeed(password);
kgen.init(128, secureRandom);
SecretKey secretKey = kgen.generateKey();
byte[] enCodeFormat = secretKey.getEncoded();
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher = Cipher.getInstance("AES");
cipher.init(2, key);
byte[] result = cipher.doFinal(content);
return result;
}
public static final String decrypt(String data, String key,
String charsetName) throws Exception {
return new String(decrypt(hex2byte(data), key.getBytes(charsetName)),
charsetName);
}
public static final String encrypt(String data, String key,
String charsetName) throws Exception {
return byte2hex(encrypt(data.getBytes(charsetName),
key.getBytes(charsetName)));
}
private static String byte2hex(byte[] b) {
return encoder.encode(b);
}
private static byte[] hex2byte(String hex) throws IOException {
return decoder.decodeBuffer(hex);
}
public static void main(String[] args) throws Exception {
String enStr = AES.encrypt("testStr", "123", "utf-8");
System.out.println("AES加密后字符串:" + enStr);
// aes=new AES("a65d4s285ds5d4fe2f35df");
String deStr = AES.decrypt(enStr, "123", "utf-8");
System.out.println("AES解密后字符串:" + deStr);
enStr = AES.encrypt("testStr2223332", "123456", "utf-8");
System.out.println("AES加密后字符串:" + enStr);
// aes=new AES("a65d4s285ds5d4fe2f35df");
deStr = AES.decrypt(enStr, "123456", "utf-8");
System.out.println("AES解密后字符串:" + deStr);
}
}
最佳答案