包com.mstf.aes; 进口java.io.UnsupportedEncodingException; 进口java.security.InvalidKeyException; 进口java.security.NoSuchAlgorithmException; 进口java.security.SecureRandom; 进口javax.crypto.BadPaddingException; 进口javax.crypto.Cipher; 进口javax.crypto.IllegalBlockSizeException; 进口javax.crypto.KeyGenerator; 进口javax.crypto.NoSuchPaddingException; 进口javax.crypto.SecretKey; 进口javax.crypto.spec.SecretKeySpec;/* * * AES加密解密 * @author ceet * */公开课AESUntil {/* * *加密 * * */是公共静态字符串(字符串内容,字符串键){ 如果(内容==null | | content.length () & lt;1) 返回null; 尝试{ KeyGenerator kgen=KeyGenerator.getInstance (AES); kgen。init(128年,新的SecureRandom (key.getBytes ())); SecretKey SecretKey=kgen.generateKey (); byte [] enCodeFormat=secretKey.getEncoded (); SecretKeySpec SecretKeySpec=new SecretKeySpec (enCodeFormat AES); 密码密码=. getinstance (AES); byte [] byteContent=content.getBytes (“utf - 8”); cipher.init(密码。ENCRYPT_MODE secretKeySpec); byte [] byteRresult=cipher.doFinal (byteContent); StringBuffer某人=new StringBuffer (); for (int i=0;我& lt;byteRresult.length;我+ +){ 十六进制字符串=整数。toHexString (byteRresult(我),0 xff); 如果(hex.length ()==1) { 十六进制=' 0 ' +十六进制; } sb.append (hex.toUpperCase ()); } 返回sb.toString (); }捕捉(NoSuchAlgorithmException e) { e.printStackTrace (); }捕捉(NoSuchPaddingException e) { e.printStackTrace (); }捕捉(InvalidKeyException e) { e.printStackTrace (); }捕捉(UnsupportedEncodingException e) { e.printStackTrace (); }捕捉(IllegalBlockSizeException e) { e.printStackTrace (); }捕捉(BadPaddingException e) { e.printStackTrace (); } 返回null; }/* * *解密 * * */Dcodes公共静态字符串(字符串内容,字符串键){ 如果(内容==null | | content.length () & lt;1) 返回null; 如果(content.trim () . length () & lt;19) 返回内容; byte [] byteRresult=new byte [content.length ()/2); for (int i=0;我& lt;content.length ()/2;我+ +){ int=Integer.parseInt(含量高。substring(我* 2 * 2 + 1),16); int=Integer.parseInt(含量低。substring(我* 2 + 1 * 2 + 2),16); byteRresult[我]=(字节)(高* 16 +低); } 尝试{ KeyGenerator kgen=KeyGenerator.getInstance (AES); kgen。init(128年,新的SecureRandom (key.getBytes ())); SecretKey SecretKey=kgen.generateKey (); byte [] enCodeFormat=secretKey.getEncoded (); SecretKeySpec SecretKeySpec=new SecretKeySpec (enCodeFormat AES); 密码密码=. getinstance (AES); cipher.init(密码。DECRYPT_MODE secretKeySpec); 结果byte []=cipher.doFinal (byteRresult); 返回新字符串(结果); }捕捉(NoSuchAlgorithmException e) { e.printStackTrace (); }捕捉(NoSuchPaddingException e) { e.printStackTrace (); }捕捉(InvalidKeyException e) { e.printStackTrace (); }捕捉(IllegalBlockSizeException e) { e.printStackTrace (); }捕捉(BadPaddingException e) { e.printStackTrace (); } 返回null; }/* * *详细解释 *【ceet为加密的密匙】 *【管理为需要加密的字符串】 *【67 be5ed967dba9b9810c295be6def5d5为解密后的字符串】 *【如果更改ceet,那么67 be5ed967dba9b9810c295be6def5d5字符串会发生变化】 * @param arg游戏 *///调用测试 公共静态void main (String [] args) { system . out。println(“需要加密的内容:“+是(“管理”、“ceet”)); system . out。println(“经过解密的内容:“+ Dcodes (“67 be5ed967dba9b9810c295be6def5d5”、“ceet”)); } }
以上这篇Java AES加密解密的简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。