public class AES extends Object
mode: 加密算法模式,是用来描述加密算法(此处特指分组密码,不包括流密码,)在加密时对明文分组的模式,它代表了不同的分组方式
padding: 补码方式是在分组密码中,当明文长度不是分组长度的整数倍时,需要在最后一个分组中填充一些数据使其凑满一个分组的长度。
iv: 在对明文分组加密时,会将明文分组与前一个密文分组进行XOR运算(即异或运算),但是加密第一个明文分组时不存在“前一个密文分组”,
因此需要事先准备一个与分组长度相等的比特序列来代替,这个比特序列就是偏移量。
| 限定符和类型 | 方法和说明 |
|---|---|
static byte[] |
decrypt(byte[] data,
byte[] key,
String transformation,
byte[] iv)
解密
cn.hutool.crypto.symmetric.AES aes = cn.hutool.crypto.symmetric.new AES(Mode.CBC, Padding.PKCS5Padding, key, KeyUtils.IV);
|
static String |
decrypt(String data,
byte[] key)
解密 默认的AES/ECB/PKCS5Padding 偏移向量null
|
static String |
decrypt(String data,
String key)
解密 默认的AES/ECB/PKCS5Padding 偏移向量null
|
static String |
decryptCBC(String data,
String key)
解密 AES/CBC/PKCS5Padding 偏移向量
IV |
static String |
decryptCBC(String data,
String key,
byte[] iv)
解密 AES/CBC/PKCS5Padding 偏移向量
IV |
static String |
decryptHex(String data,
String key)
解密 默认的AES/ECB/PKCS5Padding 偏移向量null
|
static byte[] |
decryptIvCBC(byte[] data,
byte[] key)
解密
|
static String |
decryptIvCBC(String data,
String key)
解密
|
static byte[] |
encrypt(byte[] data,
byte[] key,
String transformation,
byte[] iv)
加密
cn.hutool.crypto.symmetric.AES aes = new cn.hutool.crypto.symmetric.AES(Mode.CBC, Padding.PKCS5Padding, key, KeyUtils.IV);
return aes.encrypt(data);
|
static String |
encrypt(String data,
byte[] key)
加密 默认的AES/ECB/PKCS5Padding 偏移向量null
|
static String |
encrypt(String data,
String key)
加密 默认的AES/ECB/PKCS5Padding 偏移向量null
|
static String |
encryptCBC(String data,
String key)
加密 AES/CBC/PKCS5Padding 偏移向量
IV |
static String |
encryptCBC(String data,
String key,
byte[] iv)
加密 AES/CBC/PKCS5Padding 偏移向量
IV |
static String |
encryptHex(String data,
String key)
加密 默认的AES/ECB/PKCS5Padding 偏移向量null
|
static byte[] |
encryptIvCBC(byte[] data,
byte[] key)
加密
|
static String |
encryptIvCBC(String data,
String key)
加密
|
static byte[] |
generateKey(int keySize)
获取AES密钥
|
static byte[] |
paddingKey(String key)
AES密钥最少128bits(16位)
1、不足16位,会补齐,密钥尽量使用16位,防止补齐
2、超过16位会发生与前面异或超过,可能不兼容前端,不要超过16
|
public static String encrypt(String data, String key)
data - 被加密的字符串key - 密钥public static String decrypt(String data, String key)
data - 被解密的Base64字符串key - 密钥public static String encrypt(String data, byte[] key)
data - 被加密的字符串key - 密钥public static String decrypt(String data, byte[] key)
data - 被解密的Base64字符串key - 密钥public static String encryptHex(String data, String key)
data - 被加密的字符串key - 密钥public static String decryptHex(String data, String key)
data - 被解密的Hex字符串key - 密钥public static String encryptCBC(String data, String key)
IVdata - 被加密的字符串key - 密钥public static String decryptCBC(String data, String key)
IVdata - 被解密的Base64字符串key - 密钥public static String encryptCBC(String data, String key, byte[] iv)
IVdata - 被加密的字符串key - 密钥iv - 偏移量public static String decryptCBC(String data, String key, byte[] iv)
IVdata - 被解密的Base64字符串key - 密钥iv - 偏移量public static byte[] encrypt(byte[] data,
byte[] key,
String transformation,
byte[] iv)
cn.hutool.crypto.symmetric.AES aes = new cn.hutool.crypto.symmetric.AES(Mode.CBC, Padding.PKCS5Padding, key, KeyUtils.IV);
return aes.encrypt(data);
data - 被加密的byteskey - 密钥transformation - 算法/工作模式/填充模式iv - 偏移量public static byte[] decrypt(byte[] data,
byte[] key,
String transformation,
byte[] iv)
cn.hutool.crypto.symmetric.AES aes = cn.hutool.crypto.symmetric.new AES(Mode.CBC, Padding.PKCS5Padding, key, KeyUtils.IV);
return aes.decrypt(data);
data - 被解密的byteskey - 密钥transformation - 算法/工作模式/填充模式iv - 偏移量public static String encryptIvCBC(String data, String key)
data - 被加密的字符串key - 密钥,不足16位自动补齐public static String decryptIvCBC(String data, String key)
data - 被解密的Base64字符串key - 密钥,不足16位自动补齐public static byte[] encryptIvCBC(byte[] data,
byte[] key)
data - 被加密的byteskey - 密钥public static byte[] decryptIvCBC(byte[] data,
byte[] key)
data - 被解密的byteskey - 密钥public static byte[] paddingKey(String key)
1、不足16位,会补齐,密钥尽量使用16位,防止补齐 2、超过16位会发生与前面异或超过,可能不兼容前端,不要超过16
key - AES密钥public static byte[] generateKey(int keySize)
keySize - 密钥模(modulus)长度(单位bit)Copyright © 2024. All rights reserved.