Hutool工具对称加密的使用

ops/2024/9/23 2:20:48/

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/ops/36344.html

相关文章

v-for中的key是什么作用

在使用v-for进行列表渲染时&#xff0c;我们通常会给元素或者组件绑定一个key属性。 这个key属性有什么作用呢?我们先来看一下官方的解释&#xff1a; key属性主要用在Vue的虚拟DOM算法&#xff0c;在新Inodes对比时辨识VNodes&#xff1b; 如果不使用key&#xff0c;Vue会使用…

【一起深度学习-----VGG】

VGG 原理图&#xff1a; 原理图&#xff1a; 为啥要使用VGG块呢&#xff1f; 对于AlexNet网络来说&#xff0c;虽然十分高效了&#xff0c;但是它并没有提供一个通用的模板&#xff0c;方便后续的研究。 故采用了模块化的思想&#xff0c;方便重复使用。 其实对比于AlexNet神经…

cmake进阶:目录属性说明一

一. 简介 接下来简单学习一下 cmake 中的属性相关的概念。 属性大概可以分为多种&#xff1a;全局属性、目录属性&#xff08;源码属性&#xff09;、目标属性以及其它一些分类。 二. cmake进阶&#xff1a;目录属性 cmake中的属性可以 在如下网址查询到&#xff1a; http…

Instal IIS on Windows Server 2022 Datacenter

和以往版本一样&#xff0c;没有什么不同&#xff0c;So easy&#xff01; WinR - ServerManager.exe 打开服务器管理器&#xff0c;点击【添加角色和功能】&#xff0c;选择自己想要的角色和功能。 一、开始之前&#xff1a;帮助说明&#xff0c;点击【下一步】&#xff1b;…

CSS学习笔记之基础教程(一)

1、CSS语法 CSS 规则集&#xff08;rule-set&#xff09;由选择器和声明块组成&#xff1a; 选择器指向您需要设置样式的 HTML 元素。 声明块包含一条或多条用分号分隔的声明。 每条声明都包含一个 CSS 属性名称和一个值&#xff0c;以冒号分隔。 多条 CSS 声明用分号分隔…

linuxwindowns文件共享之samba

samba 我们所了解过的 FTP 文件传输&#xff0c;的确可以让不同主机之间进行文件传输&#xff0c;此方式特点是&#xff0c;传输文件&#xff0c;用户想要在客户端直接修改服务器的数据&#xff0c;还是较为麻烦。 既然如此&#xff0c;linux 上有一款应用叫 Samba&#xff0…

经典面试题---环形链表

1. 环形链表1. - 力扣&#xff08;LeetCode&#xff09; 要解决这道题&#xff0c;我们首先要挖掘出带环的链表与不带环的链表之间的差别。 以此&#xff0c;才能设计出算法来体现这种差别并判断。 二者最突出的不同&#xff0c;就是不带环的链表有尾结点&#xff0c;也就是说…

Compose 状态管理

文章目录 Compose 状态管理概述使用MutableStaterememberStatelessComposable & StatefulComposable状态提升rememberSaveable支持parceable不支持parceable 使用ViewModelViewModelProvider.Factory 使用Flow Compose 状态管理 概述 当应用程序的状态发生变化时&#xf…