Hutool工具对称加密的使用

news/2024/9/23 6:33:06/

1、导入pom依赖

<dependency><groupId>cn.hutool</groupId><artifactId>hutool-crypto</artifactId><version>5.7.15</version>
</dependency>

2、测试案例

import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.AES;
import cn.hutool.crypto.symmetric.DES;
import org.junit.jupiter.api.Test;public class SymmetricCryptoTest {/*** DES 模式*/@Testpublic void des() {String text = "HelloWorld";// key:DES模式下,key必须为8位String key = "12345678";// iv:偏移量,ECB模式不需要,CBC模式下必须为8位String iv = "12345678";// DES des = new DES(Mode.ECB, Padding.PKCS5Padding, key.getBytes());DES des = new DES(Mode.CBC, Padding.PKCS5Padding, key.getBytes(), iv.getBytes());String encrypt = des.encryptBase64(text);System.out.println(encrypt);String decrypt = des.decryptStr(encrypt);System.out.println(decrypt);}/*** AES 模式*/@Testpublic void aes() {String text = "HelloWorld";// key:AES模式下,key必须为16位String key = "1234567812345678";// iv:偏移量,ECB模式不需要,CBC模式下必须为16位String iv = "1234567812345678";// AES aes = new AES(Mode.ECB, Padding.PKCS5Padding, key.getBytes());AES aes = new AES(Mode.CBC, Padding.PKCS5Padding, key.getBytes(), iv.getBytes());// 加密并进行Base转码String encrypt = aes.encryptBase64(text);System.out.println(encrypt);// 解密为字符串String decrypt = aes.decryptStr(encrypt);System.out.println(decrypt);}
}

3、加密介绍

  • 从加解密使用的密钥是否相同的角度看,加密方式可以分为两种,对称加密(相同)和非对称加密(不同)。而根据加密后是否可逆,可分为可逆加密和不可逆加密,对称和非对称加密都属于可逆,摘要加密则是不可逆。

3.1 对称加密

  • 对称加密涉及三个常见概念,加密算法、加密模式 和 填充模式
  • 常见加密算法:DES 和 AES。
  • 常见加密模式:ECB 和 ECB。
  • 常见填充模式:NoPadding 和 PKCS5Padding。

3.2 非对称加密

3.3 摘要加密

  • 由一个单向Hash加密函数对消息进行作用而产生,唯一对应一个消息或文本的固定长度的值。
  • 常见加密算法:MD5、SHA1、SHA256、SHA512

参考链接:Java使用Hutool工具完成加密解密_digesthex-CSDN博客


http://www.ppmy.cn/news/1456853.html

相关文章

Golang | Leetcode Golang题解之第71题简化路径

题目&#xff1a; 题解&#xff1a; func simplifyPath(path string) string {stack : []string{}for _, name : range strings.Split(path, "/") {if name ".." {if len(stack) > 0 {stack stack[:len(stack)-1]}} else if name ! "" &am…

C语言 动态内存管理

目录 1. C/C程序的内存分配2. 动态内存分配的作用3. malloc - 分配内存4. free - 释放内存5. calloc - 分配并清零内存6. realloc - 调整之前分配的内存块7. 常见的动态内存的错误7.1 对空指针解引用7.2 对动态开辟空间的越界访问7.3 对非动态开辟内存使用free7.4 使用free释放…

【Linux】文件内容相关的命令,补充:管道符

1、查看文件内容 &#xff08;1-1&#xff09;查看文件内容&#xff1a;cat&#xff0c;tac&#xff0c;head&#xff0c;tail 查看文件内容cat 文件名查看文件内容并显示行号cat -n 文件名倒着查看文件内容&#xff08;从最后一行开始&#xff09;tac 文件名查看文件前10行…

加索引导致表被锁的原因及处理方法

目录 为什么加索引会导致表被锁&#xff1f;什么情况下会被锁&#xff1f;要注意什么&#xff1f;被锁怎么处理&#xff1f;MySQL查询被锁的表查询被锁的库 PostgreSQL查询被锁的表查询被锁的库 Oracle查询被锁的表查询被锁的库 SQL Server查询被锁的表查询被锁的库 结语 在数据…

EXISTS子查询

EXISTS子查询是一种常用的SQL语句组件&#xff0c;它用于检查一组记录是否存在。如果子查询返回至少一行结果&#xff0c;EXISTS表达式就会返回TRUE&#xff1b;如果子查询不返回任何结果&#xff0c;EXISTS表达式就会返回FALSE。 我将提供一个具体的例子&#xff0c;包括表结构…

Thinkphp5 中常见的session 操作方法

在 ThinkPHP 框架中&#xff0c;session 是用于在多个页面或请求之间存储用户信息的机制。以下是在 ThinkPHP 中进行 session 常见操作的一些示例&#xff1a; 启动 Session 在 ThinkPHP 中&#xff0c;通常不需要手动启动 Session&#xff0c;因为框架会在应用启动时自动处理…

springboot整合mybatis配置多数据源(mysql/oracle)

目录 前言导入依赖坐标创建mysql/oracle数据源配置类MySQLDataSourceConfigOracleDataSourceConfig application.yml配置文件配置mysql/oracle数据源编写Mapper接口编写Book实体类编写测试类 前言 springboot整合mybatis配置多数据源&#xff0c;可以都是mysql数据源&#xff…

C++中auto关键字的用法详解

1.简介 auto作为一个C语言就存在的关键字&#xff0c;在C语言和C之间却有很大区别。 在C语言中auto修饰的变量&#xff0c;是具有自动存储器的局部变量&#xff0c;但因为局部变量默认类别默认是auto修饰导致一直没有人去使用它。 C11中&#xff0c;标准委员会赋予了auto全新…