如何使用hutool工具在IDEA中进行加密

本文介绍了如何在IDEA中利用Hutool工具进行加密,重点讲解了对称加密算法AES和DES的使用方法,包括加密、解密以及16进制表示的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是密钥?

密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。

​​​​​​​密钥分类

密钥分为:对称密钥非对称密钥

如何区分是对称密钥和非对称密钥?

根据密码算法所使用的加密密钥和解密密钥是否相同能否由加密过程推导出解密过程(或者由解密过程推导出加密过程),可将密码体制分为对称密码体制(也叫作单钥密码体制、秘密密钥密码体制、对称密钥密码体制)和非对称密码体制(也叫作双钥密码体制、公开密钥密码体制、非对称密钥密码体制)。

​​​​​​​对称密钥

也称私钥加密,属于对称密码体制,是指双方用同一个密钥进行加密和解密

安全性依赖于:1、加密算法的安全性。2、密钥的安全性

优点:算法公开,加/解密速度快,占用空间小

缺点:密钥的管理和分发难度大

用途:信息量大的加密

代表算法DES算法、3DES算法、IDEA算法、AES算法

存在问题:无法实现数字签名、在建立安全信道之前,密钥如何传输。

​​​​​​​非对称密钥

也称公钥加密,属于非对称密码体制。它使用了一对密钥一个公钥,一个私钥。A产生了一对密钥,保留私钥,传播公钥,如果B需要给A发送加密信息,B用A的公钥加密,A收到以后,再用私钥解开。

优点:安全性高,不需要交换密钥

缺点:加/解密速度慢,不适合大量加密。

用途:关键性的、核心机密数据。

代表算法RSA算法、ElGamal算法、椭圆曲线加密算法

存在问题

  1. 由于公钥公开,如果有人发给我消息,我不知道是谁发的。
  2. 用自己私钥加密的信息,任何知道我公钥的人都能看到。

​​​​​​​实际使用

如果不是关键的数据可以使用DES加密,或者Base64编码不直接看到数据即可,这样速度快。

稍微重要的数据,可以用AES加密,注意保护密钥。

比较重要的数据,可以使用RSA加密

工作中使用:AES加密后再使用BASE64转码

​​​​​​​BASE64

Base64是一种用64个字符来表示任意二进制数据的方法,可以使用hutool工具进行

​​​​​​​MD5

MD5属于摘要算法,用于检查报文是否被篡改,而不是用于加密。

​​​​​​​Hutool实现DES加密、AES加密

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

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

​​​​​​​引入Hutool依赖

<dependency>

<groupId>cn.hutool</groupId>

<artifactId>hutool-all</artifactId>

<version>5.7.22</version>

</dependency>

  1. 使用方法​​​​​​​
    1. AES加密解密

//需要加密的明文

String content = "test中文";

//随机生成密钥

byte[] key = .generateKey(SymmetricAlgorithm.AES.getValue()).getEncoded();

//构建

AES aes = SecureUtil.aes(key);

//加密

byte[] encrypt = aes.encrypt(content);

//解密

byte[] decrypt = aes.decrypt(encrypt);

//16进制的加密,同上面是两种不同的加密

//加密为16进制表示

String encryptHex = aes.encryptHex(content);

//解密为原字符串

String decryptStr = aes.decryptStr(encryptHex);

​​​​​​​2.DES加密

//需要加密的明文

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值