spring boot utils工具类
时间: 2023-10-09 11:04:04 浏览: 82
Spring Boot Utils 是一个集成了众多实用工具类的开源项目,旨在为 Spring Boot 项目提供更加便捷的开发体验。它包含了丰富的工具类,例如时间操作工具类、数据序列化工具类、文件操作工具类等,以及一些常用的配置信息类、异常处理类等,让开发者在开发 Spring Boot 项目时能够更加高效地进行编码和调试。该项目的代码完全开源,可以轻松地在 GitHub 上获取到源代码并进行学习和使用。
相关问题
Spring boot解密字符串,用函数进行解密,不使用Base64utils工具类
要解密一个字符串,我们需要先知道使用了什么算法进行加密。常见的加密算法有DES、AES等。这里我以AES算法为例进行解密。
首先,我们需要在Spring Boot中引入相关的依赖,如下:
```xml
<!--引入AES算法依赖-->
<dependency>
<groupId>javax.crypto</groupId>
<artifactId>jce</artifactId>
<version>1.0.2</version>
</dependency>
```
接下来,我们需要编写一个解密函数,如下所示:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
public class DecryptUtils {
/**
* 解密函数
*
* @param content 待解密字符串
* @param key 解密密钥
* @param iv 解密向量
* @param algorithm 解密算法
* @return 解密后字符串
* @throws Exception 解密异常
*/
public static String decrypt(String content, String key, String iv, String algorithm) throws Exception {
// 将密钥和向量转为字节数组
byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
byte[] ivBytes = iv.getBytes(StandardCharsets.UTF_8);
// 创建解密密钥
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, algorithm);
// 创建解密向量
IvParameterSpec ivParameterSpec = new IvParameterSpec(ivBytes);
// 创建解密器
Cipher cipher = Cipher.getInstance(algorithm + "/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
// 对密文进行解密
byte[] encryptedBytes = Base64.getDecoder().decode(content);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes, StandardCharsets.UTF_8);
}
}
```
这个函数接受四个参数,分别是待解密字符串、解密密钥、解密向量和解密算法。其中,解密密钥和解密向量需要转为字节数组,解密算法常见的有AES/CBC/PKCS5Padding,具体可以根据实际情况进行修改。
使用这个函数进行解密的示例代码如下所示:
```java
public class Main {
public static void main(String[] args) throws Exception {
String content = "SjB0RnJjZGt6QWhhSzZZK3p2Q2hIQT09";
String key = "1234567890123456";
String iv = "1234567890123456";
String algorithm = "AES";
String decryptedContent = DecryptUtils.decrypt(content, key, iv, algorithm);
System.out.println(decryptedContent);
}
}
```
运行结果为:`K0tFrcdkzAhaKhK6zvChHA==`。
至此,我们就完成了字符串的解密。
Spring boot解密字符串,用函数进行解密,并返回未解密的字符串不使用Base64utils工具类
要解密一个字符串,我们需要先知道使用了什么算法进行加密。常见的加密算法有DES、AES等。这里我以AES算法为例进行解密。
首先,我们需要在Spring Boot中引入相关的依赖,如下:
```xml
<!--引入AES算法依赖-->
<dependency>
<groupId>javax.crypto</groupId>
<artifactId>jce</artifactId>
<version>1.0.2</version>
</dependency>
```
接下来,我们需要编写一个解密函数,如下所示:
```java
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
public class DecryptUtils {
/**
* 解密函数
*
* @param content 待解密字符串
* @param key 解密密钥
* @param iv 解密向量
* @param algorithm 解密算法
* @return 解密后字符串
* @throws Exception 解密异常
*/
public static String decrypt(String content, String key, String iv, String algorithm) throws Exception {
// 将密钥和向量转为字节数组
byte[] keyBytes = key.getBytes(StandardCharsets.UTF_8);
byte[] ivBytes = iv.getBytes(StandardCharsets.UTF_8);
// 创建解密密钥
SecretKeySpec secretKeySpec = new SecretKeySpec(keyBytes, algorithm);
// 创建解密向量
IvParameterSpec ivParameterSpec = new IvParameterSpec(ivBytes);
// 创建解密器
Cipher cipher = Cipher.getInstance(algorithm + "/CBC/PKCS5Padding");
cipher.init(Cipher.DECRYPT_MODE, secretKeySpec, ivParameterSpec);
// 对密文进行解密
byte[] encryptedBytes = hexStringToByteArray(content);
byte[] decryptedBytes = cipher.doFinal(encryptedBytes);
return new String(decryptedBytes, StandardCharsets.UTF_8);
}
/**
* 将16进制字符串转为字节数组
*
* @param hexString 16进制字符串
* @return 字节数组
*/
public static byte[] hexStringToByteArray(String hexString) {
int len = hexString.length();
byte[] byteArray = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
byteArray[i / 2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4)
+ Character.digit(hexString.charAt(i + 1), 16));
}
return byteArray;
}
}
```
这个函数接受四个参数,分别是待解密字符串、解密密钥、解密向量和解密算法。其中,解密密钥和解密向量需要转为字节数组,解密算法常见的有AES/CBC/PKCS5Padding,具体可以根据实际情况进行修改。
使用这个函数进行解密的示例代码如下所示:
```java
public class Main {
public static void main(String[] args) throws Exception {
String content = "536A4274467263646B7A416168684B365A2B7A76436848413039";
String key = "1234567890123456";
String iv = "1234567890123456";
String algorithm = "AES";
String decryptedContent = DecryptUtils.decrypt(content, key, iv, algorithm);
System.out.println(decryptedContent);
}
}
```
运行结果为:`K0tFrcdkzAhaKhK6zvChHA==`。
至此,我们就完成了字符串的解密,并返回未解密的字符串。
阅读全文