废话不多说直接上代码!! 这个看不懂的就不用学java 了!
package com.pinnacle;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class AesTest {
/**
* 将byte数组转化成为16进制输出
* @param bytes
* @return
*/
public static String converByteToHexString(byte[] bytes) {
String result="";
for(int i=0;i int temp=bytes[i] &0xff;
String tempHex =Integer.toHexString(temp);
if(tempHex.length()<2) {
result+="0"+tempHex;
}else {
result+=tempHex;
}
}
return result;
}
/**
* AES加密算法
* @param message
* @param password
* @return
* @throws Exception
*/
public static byte[] AESJDKEncode(String message,String password) {
try {
KeyGenerator kgen=KeyGenerator.getInstance("AES");//实例化一个用AES加密算法的密钥生成器
kgen.init(128,new SecureRandom(password.getBytes()));//使用用户提供的password初始化此密钥生成器,使其具有确定的密钥大小128字节长。
SecretKey secreKey=kgen.generateKey();//生成一个密钥。
byte[] enCodeFormat=secreKey.getEncoded();//返回基本编码格式的密钥,如果此密钥不支持编码,则返回 null。
SecretKeySpec key=new SecretKeySpec(enCodeFormat, "AES");//根据给定的enCodeFormat字节数组构造一个用AES算法加密的密钥。
Cipher cipher =Cipher.getInstance("AES");//创建密码器
cipher.init(Cipher.ENCRYPT_MODE, key);//初始化 // 以加密的方式用密钥初始化此 Cipher。
byte[] result=cipher.doFinal(message.getBytes());//按byteContent单部分操作加密指定的
return result;//加密 返回加密过后的byteContent
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
/**
* AES解密算法
* @param message
* @param password
* @return
*/
public static byte[] AESJDKDecode(byte[]message,String password) {
try {
KeyGenerator kgen=KeyGenerator.getInstance("AES");
kgen.init(128,new SecureRandom(password.getBytes()));
SecretKey secreKey=kgen.generateKey();
byte[] enCodeFormat=secreKey.getEncoded();
SecretKeySpec key=new SecretKeySpec(enCodeFormat, "AES");
Cipher cipher =Cipher.getInstance("AES");//创建密码器
cipher.init(Cipher.DECRYPT_MODE, key);//初始化
byte[] result=cipher.doFinal(message);
return result;//解密
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String content="123123123131";
String password ="key";
System.out.println("加密前的字符串为:"+content);
byte[] encodeMessage=AESJDKEncode(content,password);//AES加密
System.out.println("AES 加密后为 :"+converByteToHexString(encodeMessage));
byte[] decodeMessage=AESJDKDecode(encodeMessage,password);
System.out.println("AES 最终解密后为:"+new String(decodeMessage));*/
}
}