Java AES加密解密的简单实现方法

  

        包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加密解密的简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持。

Java AES加密解密的简单实现方法