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


相关推荐: Laravel如何使用Service Container和依赖注入?(代码示例)  公司网站制作需要多少钱,找人做公司网站需要多少钱?  三星网站视频制作教程下载,三星w23网页如何全屏?  用yum安装MySQLdb模块的步骤方法  如何在云虚拟主机上快速搭建个人网站?  个人摄影网站制作流程,摄影爱好者都去什么网站?  焦点电影公司作品,电影焦点结局是什么?  如何在浏览器中启用Flash_2025年继续使用Flash Player的方法【过时】  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  怎么用AI帮你设计一套个性化的手机App图标?  ,在苏州找工作,上哪个网站比较好?  Linux安全能力提升路径_长期防护思维说明【指导】  Laravel Pest测试框架怎么用_从PHPUnit转向Pest的Laravel测试教程  厦门模型网站设计制作公司,厦门航空飞机模型掉色怎么办?  JavaScript Ajax实现异步通信  Swift开发中switch语句值绑定模式  Laravel如何实现API速率限制?(Rate Limiting教程)  PHP 500报错的快速解决方法  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  简单实现Android验证码  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  javascript中的try catch异常捕获机制用法分析  谷歌浏览器下载文件时中断怎么办 Google Chrome下载管理修复  Python结构化数据采集_字段抽取解析【教程】  javascript读取文本节点方法小结  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  Laravel distinct去重查询_Laravel Eloquent去重方法  Laravel API资源类怎么用_Laravel API Resource数据转换  如何彻底删除建站之星生成的Banner?  Laravel怎么进行数据库事务处理_Laravel DB Facade事务操作确保数据一致性  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  b2c电商网站制作流程,b2c水平综合的电商平台?  🚀拖拽式CMS建站能否实现高效与个性化并存?  Android实现代码画虚线边框背景效果  如何用PHP快速搭建CMS系统?  Laravel的路由模型绑定怎么用_Laravel Route Model Binding简化控制器逻辑  如何在阿里云购买域名并搭建网站?  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  如何快速查询网站的真实建站时间?  网站广告牌制作方法,街上的广告牌,横幅,用PS还是其他软件做的?  Laravel如何实现事件和监听器?(Event & Listener实战)  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  教你用AI润色文章,让你的文字表达更专业  在centOS 7安装mysql 5.7的详细教程