Java使用Hutool实现AES、DES加密解密的方法

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

在Java世界中,AES、DES加密解密需要使用Cipher对象构建加密解密系统,Hutool中对这一对象做再包装,简化了加密解密过程。

介绍

AES和DES同属对称加密算法,数据发信方将明文(原始数据)和加密密钥一起经过特殊加密算法处理后,使其变成复杂的加密密文发送出去。收信方收到密文后,若想解读原文,则需要使用加密用过的密钥及相同算法的逆算法对密文进行解密,才能使其恢复成可读明文。在对称加密算法中,使用的密钥只有一个,发收信双方都使用这个密钥对数据进行加密和解密,这就要求解密方事先必须知道加密密钥。

在Java世界中,AES、DES加密解密需要使用Cipher对象构建加密解密系统,Hutool中对这一对象做再包装,简化了加密解密过程。

引入Hutool

<dependency>
  <groupId>com.xiaoleilu</groupId>
  <artifactId>hutool-all</artifactId>
  <version>3.0.9</version>
</dependency>

使用

AES加密解密

String content = "test中文";

//随机生成密钥
byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();

//构建
AES aes = SecureUtil.aes(key);

//加密
byte[] encrypt = aes.encrypt(content);
//解密
byte[] decrypt = aes.decrypt(encrypt);

//加密为16进制表示
String encryptHex = des.encryptHex(content);
//解密为原字符串
String decryptStr = des.decryptStr(encryptHex);

DES加密解密

DES的使用方式与AES基本一致

String content = "test中文";

//随机生成密钥
byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.DES.getValue()).getEncoded();

//构建
DES des = SecureUtil.des(key);

//加密解密
byte[] encrypt = des.encrypt(content);
byte[] decrypt = des.decrypt(encrypt);

//加密为16进制,解密为原字符串
String encryptHex = des.encryptHex(content);
String decryptStr = des.decryptStr(encryptHex);

更多

Hutool中针对JDK支持的所有对称加密算法做了封装,封装为SymmetricCrypto类,AES和DES两个类是此类的简化表示。通过实例化这个类传入相应的算法枚举即可使用相同方法加密解密字符串或对象。

Hutool支持的对称加密算法枚举有:

  1. AES
  2. ARCFOUR
  3. Blowfish
  4. DES
  5. DESede
  6. RC2
  7. PBEWithMD5AndDES
  8. PBEWithSHA1AndDESede
  9. PBEWithSHA1AndRC2_40

这些枚举全部在SymmetricAlgorithm中被列举

对称加密对象的使用也非常简单:

String content = "test中文";

//随机生成密钥
byte[] key = SecureUtil.generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();

//构建
SymmetricCrypto aes = new SymmetricCrypto(SymmetricAlgorithm.AES, key);

//加密
byte[] encrypt = aes.encrypt(content);
//解密
byte[] decrypt = aes.decrypt(encrypt);

//加密为16进制表示
String encryptHex = aes.encryptHex(content);
//解密为字符串
String decryptStr = aes.decryptStr(encryptHex);

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# java实现des加密解密  # java实现加密解密  # Java实现AES加密解密  # Java中使用Hutool进行AES加密解密的方法举例  # 加密解密  # 这一  # 使其  # 中对  # 收信  # 这就  # 此类  # 只有一个  # 简化了  # 用过  # 双方都  # 要使  # 使用这个  # 大家多多  # 同属  # 则需  # 原始数据  # groupId  # gt  # dependency 


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


相关推荐: Laravel如何实现用户注册和登录?(Auth脚手架指南)  潮流网站制作头像软件下载,适合母子的网名有哪些?  微信公众帐号开发教程之图文消息全攻略  谷歌浏览器如何更改浏览器主题 Google Chrome主题设置教程  如何用wdcp快速搭建高效网站?  米侠浏览器网页图片不显示怎么办 米侠图片加载修复  高防服务器租用指南:配置选择与快速部署攻略  zabbix利用python脚本发送报警邮件的方法  Laravel如何实现多级无限分类_Laravel递归模型关联与树状数据输出【方法】  大连网站制作费用,大连新青年网站,五年四班里的视频怎样下载啊?  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  Laravel Eloquent关联是什么_Laravel模型一对一与一对多关系精讲  Laravel如何实现API资源集合?(Resource Collection教程)  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  黑客如何利用漏洞与弱口令入侵网站服务器?  Laravel如何从数据库删除数据_Laravel destroy和delete方法区别  Laravel如何使用.env文件管理环境变量?(最佳实践)  Android Socket接口实现即时通讯实例代码  如何在建站之星绑定自定义域名?  Android自定义listview布局实现上拉加载下拉刷新功能  阿里云高弹*务器配置方案|支持分布式架构与多节点部署  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  如何在香港免费服务器上快速搭建网站?  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  Laravel怎么为数据库表字段添加索引以优化查询  Laravel如何实现RSS订阅源功能_Laravel动态生成网站XML格式订阅内容【教程】  装修招标网站设计制作流程,装修招标流程?  如何用狗爹虚拟主机快速搭建网站?  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  Python文本处理实践_日志清洗解析【指导】  Laravel中间件如何使用_Laravel自定义中间件实现权限控制  Laravel如何处理跨站请求伪造(CSRF)保护_Laravel表单安全机制与令牌校验  如何为不同团队 ID 动态生成多个“认领值班”按钮  edge浏览器无法安装扩展 edge浏览器插件安装失败【解决方法】  Laravel如何为API生成Swagger或OpenAPI文档  PythonWeb开发入门教程_Flask快速构建Web应用  百度浏览器ai对话怎么关 百度浏览器ai聊天窗口隐藏  如何在阿里云虚拟服务器快速搭建网站?  Android 常见的图片加载框架详细介绍  如何在IIS中配置站点IP、端口及主机头?  移动端手机网站制作软件,掌上时代,移动端网站的谷歌SEO该如何做?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  详解免费开源的DotNet二维码操作组件ThoughtWorks.QRCode(.NET组件介绍之四)  Laravel怎么创建自己的包(Package)_Laravel扩展包开发入门到发布  HTML5空格和nbsp有啥关系_nbsp的作用及使用场景【说明】  JS中对数组元素进行增删改移的方法总结  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  nginx修改上传文件大小限制的方法  如何在IIS中新建站点并解决端口绑定冲突?  打造顶配客厅影院,这份100寸电视推荐名单请查收