java实现的AES秘钥生成算法示例

发布时间 - 2026-01-10 22:19:37    点击率:

本文实例讲述了java实现的AES秘钥生成算法。分享给大家供大家参考,具体如下:

import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class Test {
  public static void main(String[] args) {
    getKey();
    getKeyByPass();
  }
  /**
  * 随机生成秘钥
  */
  public static void getKey() {
    try {
      KeyGenerator kg = KeyGenerator.getInstance("AES");
      kg.init(128);
      //要生成多少位,只需要修改这里即可128, 192或256
      SecretKey sk = kg.generateKey();
      byte[] b = sk.getEncoded();
      String s = byteToHexString(b);
      System.out.println(s);
      System.out.println("十六进制密钥长度为"+s.length());
      System.out.println("二进制密钥的长度为"+s.length()*4);
    }
    catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
      System.out.println("没有此算法。");
    }
  }
  /**
  * 使用指定的字符串生成秘钥
  */
  public static void getKeyByPass() {
    //生成秘钥
    String password="testkey";
    try {
      KeyGenerator kg = KeyGenerator.getInstance("AES");
      // kg.init(128);//要生成多少位,只需要修改这里即可128, 192或256
      //SecureRandom是生成安全随机数序列,password.getBytes()是种子,只要种子相同,序列就一样,所以生成的秘钥就一样。
      kg.init(128, new SecureRandom(password.getBytes()));
      SecretKey sk = kg.generateKey();
      byte[] b = sk.getEncoded();
      String s = byteToHexString(b);
      System.out.println(s);
      System.out.println("十六进制密钥长度为"+s.length());
      System.out.println("二进制密钥的长度为"+s.length()*4);
    }
    catch (NoSuchAlgorithmException e) {
      e.printStackTrace();
      System.out.println("没有此算法。");
    }
  }
  /**
  * byte数组转化为16进制字符串
  * @param bytes
  * @return
  */
  public static String byteToHexString(byte[] bytes) {
    StringBuffer sb = new StringBuffer();
    for (int i = 0; i < bytes.length; i++) {
      String strHex=Integer.toHexString(bytes[i]);
      if(strHex.length() > 3) {
        sb.append(strHex.substring(6));
      } else {
        if(strHex.length() < 2) {
          sb.append("0" + strHex);
        } else {
          sb.append(strHex);
        }
      }
    }
    return sb.toString();
  }
}

PS:关于加密解密感兴趣的朋友还可以参考本站在线工具:

密码安全性在线检测:
http://tools./password/my_password_safe

高强度密码生成器:
http://tools./password/CreateStrongPassword

迅雷、快车、旋风URL加密/解密工具:
http://tools./password/urlrethunder

在线散列/哈希算法加密工具:
http://tools./password/hash_encrypt

在线MD5/hash/SHA-1/SHA-2/SHA-256/SHA-512/SHA-3/RIPEMD-160加密工具:
http://tools./password/hash_md5_sha

在线sha1/sha224/sha256/sha384/sha512加密工具:
http://tools./password/sha_encode

希望本文所述对大家java程序设计有所帮助。


# java  # AES  # 秘钥  # 生成算法  # java实现AES可逆加密算法  # Java原生方法实现 AES 算法示例  # Java实现的对称加密算法AES定义与用法详解  # Java实现AES算法的实例代码  # 长度为  # 加密工具  # 只需要  # 随机数  # 还可以  # 感兴趣  # 给大家  # 转化为  # 所述  # 程序设计  # 高强度  # 加密解密  # 讲述了  # sk  # getKeyByPass  # getKey  # kg  # init  # getInstance  # generateKey 


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


相关推荐: Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  如何用搬瓦工VPS快速搭建个人网站?  javascript中对象的定义、使用以及对象和原型链操作小结  html5怎么画眼睛_HT5用Canvas或SVG画眼球瞳孔加JS控制动态【绘制】  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  java获取注册ip实例  Windows家庭版如何开启组策略(gpedit.msc)?(安装方法)  如何在云服务器上快速搭建个人网站?  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  香港服务器建站指南:免备案优势与SEO优化技巧全解析  晋江文学城电脑版官网 晋江文学城网页版直接进入  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Laravel如何自定义错误页面(404, 500)?(代码示例)  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  iOS发送验证码倒计时应用  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  焦点电影公司作品,电影焦点结局是什么?  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】  如何快速选择适合个人网站的云服务器配置?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  网站制作壁纸教程视频,电脑壁纸网站?  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  文字头像制作网站推荐软件,醒图能自动配文字吗?  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  Laravel怎么配置自定义表前缀_Laravel数据库迁移与Eloquent表名映射【步骤】  Laravel如何使用查询构建器?(Query Builder高级用法)  JavaScript如何操作视频_媒体API怎么控制播放  如何快速搭建个人网站并优化SEO?  Laravel怎么实现搜索功能_Laravel使用Eloquent实现模糊查询与多条件搜索【实例】  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Linux后台任务运行方法_nohup与&使用技巧【技巧】  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  如何在服务器上三步完成建站并提升流量?  Laravel如何配置任务调度?(Cron Job示例)  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  如何有效防御Web建站篡改攻击?  Laravel如何实现邮箱地址验证功能_Laravel邮件验证流程与配置  如何在 React 中条件性地遍历数组并渲染元素  Laravel怎么进行数据库回滚_Laravel Migration数据库版本控制与回滚操作  如何基于云服务器快速搭建个人网站?  微信h5制作网站有哪些,免费微信H5页面制作工具?  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法