packagetest;importjava.io.UnsupportedEncodingException;importjava.security.InvalidKeyException;importjava.security.MessageDigest;importjava.security.NoSuchAlgorithmException;importjava.security.SecureRandom;importjavax.crypto.BadPaddingException;importjavax.crypto.Cipher;importjavax.crypto.IllegalBlockSizeException;importjavax.crypto.KeyGenerator;importjavax.crypto.NoSuchPaddingException;importjavax.crypto.SecretKey;importjavax.crypto.spec.SecretKeySpec;importsun.misc.BASE64Encoder;public classTest {public static voidmain(String[] args) {
BASE64Encoder encode= newBASE64Encoder();
String a= encode.encode(aesEncrypt("123456","123456"));
String b= encode.encode(md5Encrypt("123456"));
System.out.println(a);
System.out.println(a.length());
System.out.println(b);
System.out.println(b.length());
}/*** AES加密
*
*@paramcontent 需要加密的内容
*@parampassword 加密密码
*@return
*/
public static byte[] aesEncrypt(String content, String password) {try{//获取AES密钥生成器
KeyGenerator kgen = KeyGenerator.getInstance("AES");//使用用户提供的随机源初始化密钥生成器,密钥大小为128位。
kgen.init(128, newSecureRandom(password.getBytes()));//生成密钥
SecretKey secretKey =kgen.generateKey();//获取基本编码格式密钥,如果不支持编码则返回null
byte[] enCodeFormat =secretKey.getEncoded();//根据给定的字节数组构造一个密钥
SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES");//创建密码器
Cipher cipher = Cipher.getInstance("AES");//使用UTF-8将加密内容编码为byte序列
byte[] byteContent = content.getBytes("utf-8");//用密钥初始化此密码器为加密模式的常量
cipher.init(Cipher.ENCRYPT_MODE, key);//按单部分操作加密数据并返回
returncipher.doFinal(byteContent);
}catch(NoSuchAlgorithmException e) {
e.printStackTrace();
}catch(NoSuchPaddingException e) {
e.printStackTrace();
}catch(InvalidKeyException e) {
e.printStackTrace();
}catch(UnsupportedEncodingException e) {
e.printStackTrace();
}catch(IllegalBlockSizeException e) {
e.printStackTrace();
}catch(BadPaddingException e) {
e.printStackTrace();
}return null;
}public static byte[] md5Encrypt(String str){try{
MessageDigest digest= MessageDigest.getInstance("Md5");returndigest.digest(str.getBytes());
}catch(NoSuchAlgorithmException e) {
e.printStackTrace();return null;
}
}
}