package org.example.utils;
import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.security.spec.AlgorithmParameterSpec;
/**
* AES加密/解密
*/
public class AESUtils {
private static final String CHARSET_NAME = "UTF-8";
private static final String AES_NAME = "AES";
// 加密模式
public static final String ALGORITHM = "AES/CBC/PKCS5Padding";
/**
* 加密方法
* @param parload 明文
* @param key 加密秘鑰
* @param iv 偏移量
* @return 密文
*
*/
public static String encrypt(String parload, String key, String iv) {
String result = null;
try {
Cipher cipher = Cipher.getInstance(ALGORITHM);
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(CHARSET_NAME), AES_NAME);
AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.ENCRYPT_MODE, keySpec, paramSpec);
result = URLEncoder.encode(Base64.encodeBase64String(cipher.doFinal(parload.getBytes(CHARSET_NAME))), CHARSET_NAME);
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
/**
* 加密方法
* @param parload 密文
* @param key 加密秘鑰
* @param iv 偏移量
* @return 明文
*/
public static String decrypt(String parload, String key, String iv) {
try {
Cipher cipher = Cipher.getInstance(ALGORITHM);
SecretKeySpec keySpec = new SecretKeySpec(key.getBytes(CHARSET_NAME), AES_NAME);
AlgorithmParameterSpec paramSpec = new IvParameterSpec(iv.getBytes());
cipher.init(Cipher.DECRYPT_MODE, keySpec, paramSpec);
return new String(cipher.doFinal(Base64.decodeBase64(URLDecoder.decode(parload, CHARSET_NAME))), CHARSET_NAME);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
String key = "Dd$jSL-PTtIjaUm7lA9Z@~54K8uME2uh";
String iv = "n*6-+wmici!2ng%0";
AESUtils aes = new AESUtils();
String contents = "{\n" +
" \"age\": 0,\n" +
" \"name\": \"string\"\n" +
"}";
String encrypt = aes.encrypt(contents, key, iv);
System.out.println("加密后:" + encrypt);
String test = "FQx%2Fviuyl0ZKtJXQbCFYcXJgE2wAGsRauoDvFbSbj%2FrgugzqN3GGHIQnsDb1s68aGZOqY4XP5TR3dz5IFt2xWLL4F7eXAb1qqGYcF0nuqBJ8zN23dfhEwShyDC9rtlFt";
String decrypt = aes.decrypt(test, key, iv);
System.out.println("解密后:" + decrypt);
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
Request body和Response body加解密源码
共24个文件
java:11个
xml:7个
9239e39001469ed32f022c05078476eccc5f15fe:2个
需积分: 0 1 下载量 39 浏览量
2023-08-16
10:23:22
上传
评论
收藏 16KB RAR 举报
温馨提示
java body加解密
资源推荐
资源详情
资源评论
收起资源包目录
body-encrypt-decrypt-demo.rar (24个子文件)
body-encrypt-decrypt-demo
pom.xml 4KB
src
test
java
main
resources
application.properties 91B
java
org
example
adapter
EncryptResponse.java 2KB
DecryptRequest.java 2KB
annotation
Encrypt.java 327B
Decrypt.java 369B
controller
StudentController.java 1KB
utils
AESUtils.java 3KB
JsonUtils.java 883B
swagger
SwaggerConfig.java 1KB
MainApplication.java 507B
vo
ResponseObject.java 459B
Student.java 290B
.idea
jarRepositories.xml 864B
uiDesigner.xml 9KB
workspace.xml 5KB
misc.xml 480B
compiler.xml 911B
.gitignore 184B
sonarlint
issuestore
0
8
e
e
8
c
index.pb 99B
9
2
9239e39001469ed32f022c05078476eccc5f15fe 0B
1
a
4
4
2
securityhotspotstore
0
8
e
e
8
c
index.pb 99B
9
2
9239e39001469ed32f022c05078476eccc5f15fe 0B
1
a
4
4
2
encodings.xml 191B
共 24 条
- 1
资源评论
玉树临疯的码农
- 粉丝: 1
- 资源: 2
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功