import java.io.UnsupportedEncodingException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import javax.crypto.BadPaddingException;
import javax.crypto.Cipher;
import javax.crypto.IllegalBlockSizeException;
import javax.crypto.KeyGenerator;
import javax.crypto.NoSuchPaddingException;
import javax.crypto.SecretKey;
public class testjavaade {
public static void main(String[] s){
try {
KeyGenerator kg= KeyGenerator.getInstance("AES");
kg.init(256);
SecretKey key = kg.generateKey();
try {
byte[] enStr = encrypt("我是要加密的文字", key);//加密
String string = decrypt(enStr,key);
System.out.println("解密的文字:"+string); //解密
} catch (UnsupportedEncodingException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
} catch (NoSuchAlgorithmException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
}
}
//加密
public static byte[] encrypt(String str,SecretKey key) throws
UnsupportedEncodingException, IllegalBlockSizeException, BadPaddingException{
try {
Cipher cp = Cipher.getInstance("AES");//创建密码器
try {
cp.init(Cipher.ENCRYPT_MODE, key);//初始化
byte [] ptext = str.getBytes("UTF-8");
return cp.doFinal(ptext); //加密
} catch (InvalidKeyException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
return null;
}
} catch (NoSuchAlgorithmException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
return null;
} catch (NoSuchPaddingException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
return null;
}
}
//解密
public static String decrypt(byte[] b,SecretKey key) throws IllegalBlockSizeException, BadPaddingException, UnsupportedEncodingException{
Cipher cp;
try {
cp = Cipher.getInstance("AES");//创建密码器
try {
cp.init(Cipher.DECRYPT_MODE, key);//初始化
byte [] ptext = cp.doFinal(b); //解密
String str = new String(ptext, "UTF-8"); //重新显示明文
return str;
} catch (InvalidKeyException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
return null;
} //初始化
} catch (NoSuchAlgorithmException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
return null;
} catch (NoSuchPaddingException e) {
// TODO 自动生成 catch 块
e.printStackTrace();
return null;
} //创建密码器
}
}
最新评论