首页 > 开发 > Java > 正文

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

2024-07-13 10:08:51
字体:
来源:转载
供稿:网友

废话不多说,直接上代码

package com.mstf.aes; import java.io.UnsupportedEncodingException;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; /** * AES加密解密 * @author ceet * */public class AESUntil { /**  * 加密  *  *  */ public static String Ecodes(String content, String key) {  if (content == null || content.length() < 1)   return null;   try {   KeyGenerator kgen = KeyGenerator.getInstance("AES");   kgen.init(128, new SecureRandom(key.getBytes()));   SecretKey secretKey = kgen.generateKey();   byte[] enCodeFormat = secretKey.getEncoded();   SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");   Cipher cipher = Cipher.getInstance("AES");   byte[] byteContent = content.getBytes("utf-8");   cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);   byte[] byteRresult = cipher.doFinal(byteContent);   StringBuffer sb = new StringBuffer();   for (int i = 0; i < byteRresult.length; i++) {    String hex = Integer.toHexString(byteRresult[i] & 0xFF);    if (hex.length() == 1) {     hex = '0' + hex;    }    sb.append(hex.toUpperCase());   }   return sb.toString();  } 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 String Dcodes(String content, String key) {  if (content == null || content.length() < 1)   return null;   if (content.trim().length() < 19)   return content;   byte[] byteRresult = new byte[content.length() / 2];  for (int i = 0; i < content.length() / 2; i++) {   int high = Integer.parseInt(content.substring(i * 2, i * 2 + 1), 16);   int low = Integer.parseInt(content.substring(i * 2 + 1, i * 2 + 2), 16);   byteRresult[i] = (byte) (high * 16 + low);  }  try {   KeyGenerator kgen = KeyGenerator.getInstance("AES");   kgen.init(128, new SecureRandom(key.getBytes()));   SecretKey secretKey = kgen.generateKey();   byte[] enCodeFormat = secretKey.getEncoded();   SecretKeySpec secretKeySpec = new SecretKeySpec(enCodeFormat, "AES");   Cipher cipher = Cipher.getInstance("AES");   cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);   byte[] result = cipher.doFinal(byteRresult);   return new String(result);  } catch (NoSuchAlgorithmException e) {   e.printStackTrace();  } catch (NoSuchPaddingException e) {   e.printStackTrace();  } catch (InvalidKeyException e) {   e.printStackTrace();  } catch (IllegalBlockSizeException e) {   e.printStackTrace();  } catch (BadPaddingException e) {   e.printStackTrace();  }  return null; }  /**  * 详细解释  * 【ceet为加密的密匙】  * 【admin为需要加密的字符串】  * 【67BE5ED967DBA9B9810C295BE6DEF5D5为解密后的字符串】  * 【如果更改ceet,那么67BE5ED967DBA9B9810C295BE6DEF5D5字符串会发生变化】  * @param args  */ // 调用测试 public static void main(String[] args) {  System.out.println("需要加密的内容:"+Ecodes("admin", "ceet"));  System.out.println("经过解密的内容:"+Dcodes("67BE5ED967DBA9B9810C295BE6DEF5D5", "ceet")); }}

以上这篇Java AES加密解密的简单实现方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持VeVb武林网。


注:相关教程知识阅读请移步到JAVA教程频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表