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 非对称加密
- 与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)
- 常见加密算法:RSA 和 ECC。
3.3 摘要加密
- 由一个单向Hash加密函数对消息进行作用而产生,唯一对应一个消息或文本的固定长度的值。
- 常见加密算法:MD5、SHA1、SHA256、SHA512
参考链接:Java使用Hutool工具完成加密解密_digesthex-CSDN博客