写一套springboot接口加解密代码
时间: 2023-12-09 20:28:39 浏览: 73
springboot-rsa-aes-demo:RSA和AES前端数据加密,对数据解密,以及返回参数加密,前端解密,完整原始文件,由于是城市表面常用的是这二种加解密方式,所以就写了这二种,每天会自动更换密关键字,后续我会陆续更新其他的加解密算法,技术点采用在新的spring-boot 2.3.1版本+ mybatisPlus + mysql数据库
5星 · 资源好评率100%
好的,这里是示例代码。请注意,为了更好地保护您的数据,此代码使用了AES对称加密和Base64编码,同时保证了接口的高可用性和易用性。
```
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.tomcat.util.codec.binary.Base64;
@Service
public class EncryptionService {
private static final String AES_ALGORITHM = "AES";
private static final String SECRET_KEY = "0123456789123456";
private static SecretKeySpec getKey() {
byte[] key = SECRET_KEY.getBytes();
return new SecretKeySpec(key, AES_ALGORITHM);
}
public static String encrypt(String data) throws Exception {
Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
cipher.init(Cipher.ENCRYPT_MODE, getKey());
byte[] encryptedBytes = cipher.doFinal(data.getBytes());
return Base64.encodeBase64String(encryptedBytes);
}
public static String decrypt(String encryptedData) throws Exception {
Cipher cipher = Cipher.getInstance(AES_ALGORITHM);
cipher.init(Cipher.DECRYPT_MODE, getKey());
byte[] decodedBytes = Base64.decodeBase64(encryptedData);
byte[] decryptedBytes = cipher.doFinal(decodedBytes);
return new String(decryptedBytes);
}
}
@RestController
public class MyController {
@GetMapping("/encrypt")
public String encrypt(@RequestParam String data) throws Exception {
return EncryptionService.encrypt(data);
}
@GetMapping("/decrypt")
public String decrypt(@RequestParam String encryptedData) throws Exception {
return EncryptionService.decrypt(encryptedData);
}
}
```
以上代码分别提供了两个GET接口,简单地实现了加解密功能。通过SpringBoot的@RestController注解使其易于使用。
请注意:为了确保数据安全,请将SECRET_KEY替换为真正的密钥,并在生产环境中使用HTTPS来保护数据传输过程。
阅读全文