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

发布时间 - 2026-01-11 01:49:58    点击率:

废话不多说,直接上代码

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


# java  # rsa加密解密实现  # Java使用AES加密和解密的实例详解  # Java AES加密和解密教程  # Java实现AES加密和解密方式完整示例  # JAVA中AES对称加密和解密过程  # 使用Java实现加密之AES加解密  # Java中使用Hutool进行AES加密解密的方法举例  # java AES加密/解密实现完整代码(附带源码)  # 给大家  # 加密解密  # 希望能  # 这篇  # 多说  # 小编  # 大家多多  # SecretKeySpec  # AES  # author  # ceet  # KeyGenerator  # IllegalBlockSizeException  # Cipher  # spec  # SecretKey  # NoSuchPaddingException  # public  # length  # null 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在VPS电脑上快速搭建网站?  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  标题:Vue + Vuex 项目中正确使用 JWT 进行身份认证的实践指南  Python结构化数据采集_字段抽取解析【教程】  Windows Hello人脸识别突然无法使用  郑州企业网站制作公司,郑州招聘网站有哪些?  什么是javascript作用域_全局和局部作用域有什么区别?  jQuery 常见小例汇总  Laravel如何使用Vite进行前端资源打包?(配置示例)  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  高防服务器租用如何选择配置与防御等级?  北京网站制作的公司有哪些,北京白云观官方网站?  如何正确下载安装西数主机建站助手?  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  实例解析angularjs的filter过滤器  如何在云虚拟主机上快速搭建个人网站?  EditPlus中的正则表达式 实战(2)  高性能网站服务器配置指南:安全稳定与高效建站核心方案  Laravel PHP版本要求一览_Laravel各版本环境要求对照  微信小程序 canvas开发实例及注意事项  如何将凡科建站内容保存为本地文件?  制作网站软件推荐手机版,如何制作属于自己的手机网站app应用?  Laravel Livewire是什么_使用Laravel Livewire构建动态前端界面  原生JS获取元素集合的子元素宽度实例  如何彻底卸载建站之星软件?  如何快速生成专业多端适配建站电话?  Laravel如何正确地在控制器和模型之间分配逻辑_Laravel代码职责分离与架构建议  Android使用GridView实现日历的简单功能  Laravel如何升级到最新版本?(升级指南和步骤)  Win11搜索栏无法输入_解决Win11开始菜单搜索没反应问题【技巧】  音乐网站服务器如何优化API响应速度?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  太平洋网站制作公司,网络用语太平洋是什么意思?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  如何有效防御Web建站篡改攻击?  魔方云NAT建站如何实现端口转发?  如何快速搭建FTP站点实现文件共享?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  在线教育网站制作平台,山西立德教育官网?  如何在Ubuntu系统下快速搭建WordPress个人网站?  如何在IIS服务器上快速部署高效网站?  SQL查询语句优化的实用方法总结  教学论文网站制作软件有哪些,写论文用什么软件 ?  小视频制作网站有哪些,有什么看国内小视频的网站,求推荐?  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  Laravel怎么使用Session存储数据_Laravel会话管理与自定义驱动配置【详解】  Laravel如何使用Seeder填充数据_Laravel模型工厂Factory批量生成测试数据【方法】