springboot AES加密解密
时间: 2023-10-15 21:29:52 浏览: 100
在Spring Boot中使用AES加密和解密可以通过Java Cryptography Architecture (JCA)提供的javax.crypto包来实现。下面是一个简单的示例代码,演示了如何使用AES算法进行加密和解密。
首先,你需要引入Java Cryptography Extension (JCE)无限制策略文件,以支持更高级别的加密强度。你可以从Oracle官方网站下载适合你的JDK版本的无限制策略文件。
接下来,你可以创建一个工具类,例如AESUtil.java,用于封装加密和解密方法。
```java
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class AESUtil {
private static final String AES_ALGORITHM = "AES";
private static final String AES_TRANSFORMATION = "AES/ECB/PKCS5Padding";
private static final String AES_KEY = "0123456789abcdef"; // 16字节的密钥
public static String encrypt(String data) {
try {
SecretKeySpec secretKey = new SecretKeySpec(AES_KEY.getBytes(StandardCharsets.UTF_8), AES_ALGORITHM);
Cipher cipher = Cipher.getInstance(AES_TRANSFORMATION);
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
return Base64.getEncoder().encodeToString(encryptedData);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static String decrypt(String encryptedData) {
try {
SecretKeySpec secretKey = new SecretKeySpec(AES_KEY.getBytes(StandardCharsets.UTF_8), AES_ALGORITHM);
Cipher cipher = Cipher.getInstance(AES_TRANSFORMATION);
cipher.init(Cipher.DECRYPT_MODE, secretKey);
byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
return new String(decryptedData, StandardCharsets.UTF_8);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
```
在你的Spring Boot应用程序中,你可以使用AESUtil类来进行加密和解密操作。
```java
@RestController
public class MyController {
@GetMapping("/encrypt")
public String encrypt(@RequestParam String data) {
return AESUtil.encrypt(data);
}
@GetMapping("/decrypt")
public String decrypt(@RequestParam String encryptedData) {
return AESUtil.decrypt(encryptedData);
}
}
```
这样,当你访问`/encrypt`接口时,将返回加密后的数据;当你访问`/decrypt`接口时,将返回解密后的数据。
需要注意的是,上述示例代码中使用了固定的密钥,这仅适用于演示目的。在实际应用中,为了更好的安全性,你应该采用动态生成的密钥,并妥善保管密钥。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)