1. 前言
AES是一種對稱加密,所謂對稱加密就是加密與解密使用的秘鑰是一個(gè)。
2. Maven環(huán)境安裝
<dependency>
<groupId>cn.hutool</groupId>
<artifactId>hutool-all</artifactId>
<version>5.8.2</version>
</dependency>
3.加密模式
AES 加密最常用的模式就是 ECB模式 和 CBC 模式,當(dāng)然還有很多其它模式,他們都屬于AES加密。ECB模式和CBC 模式倆者區(qū)別就是 ECB 不需要 iv偏移量,而CBC需要。
4.AES加密使用參數(shù)
以下參數(shù)都是在python中使用的。文章來源:http://www.zghlxwxcb.cn/news/detail-519941.html
- 秘鑰必須為16字節(jié)或者16字節(jié)的倍數(shù)的字節(jié)型數(shù)據(jù)。
- 明文必須為16字節(jié)或者16字節(jié)的倍數(shù)的字節(jié)型數(shù)據(jù),如果不夠16字節(jié)需要進(jìn)行補(bǔ)全。
5.Hutool
import cn.hutool.crypto.Mode;
import cn.hutool.crypto.Padding;
import cn.hutool.crypto.symmetric.AES;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
/**
* @author gogo
*/
public class SymmetricCryptoUtil {
/**
* 16字節(jié)
*/
private static final String ENCODE_KEY = "1234567812345678";
private static final String IV_KEY = "0000000000000000";
public static void main(String[] args) {
String encryptData = encryptFromString("zdm321123.", Mode.CBC, Padding.ZeroPadding);
System.out.println("加密:" + encryptData);
String decryptData = decryptFromString(encryptData, Mode.CBC, Padding.ZeroPadding);
System.out.println("解密:" + decryptData);
}
public static String encryptFromString(String data, Mode mode, Padding padding) {
AES aes;
if (Mode.CBC == mode) {
aes = new AES(mode, padding,
new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"),
new IvParameterSpec(IV_KEY.getBytes()));
} else {
aes = new AES(mode, padding,
new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"));
}
return aes.encryptBase64(data, StandardCharsets.UTF_8);
}
public static String decryptFromString(String data, Mode mode, Padding padding) {
AES aes;
if (Mode.CBC == mode) {
aes = new AES(mode, padding,
new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"),
new IvParameterSpec(IV_KEY.getBytes()));
} else {
aes = new AES(mode, padding,
new SecretKeySpec(ENCODE_KEY.getBytes(), "AES"));
}
byte[] decryptDataBase64 = aes.decrypt(data);
return new String(decryptDataBase64, StandardCharsets.UTF_8);
}
}
加密:uhm2VC27Dm5j1P/LTYBdrQ==
解密:dddd321123.文章來源地址http://www.zghlxwxcb.cn/news/detail-519941.html
到了這里,關(guān)于使用Hutool對AES加密解密的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!