Spring Boot ASE 加密实现教学

在当今的信息技术中,数据安全显得尤为重要。Spring Boot 是一个流行的框架,它让开发者能够轻松地构建独立的、生产级的应用程序。本文将通过一个简单的示例,教你如何在 Spring Boot 中实现 ASE 加密。

流程概述

下面是实现 Spring Boot ASE 加密的基本步骤:

步骤 描述
1 创建 Spring Boot 项目
2 添加必要的依赖
3 创建加密服务类
4 编写控制器进行测试
5 启动应用并进行测试

步骤详细说明

1. 创建 Spring Boot 项目

使用 Spring Initializr ( 创建一个新的 Spring Boot 项目,选择 Web 依赖项。

2. 添加必要的依赖

pom.xml 文件中添加 Apache Commons Codec 依赖,用于字符串加密。

<dependency>
    <groupId>commons-codec</groupId>
    <artifactId>commons-codec</artifactId>
    <version>1.15</version>
</dependency>

3. 创建加密服务类

创建一个 EncryptionService 类,来实现 AES 加密和解密功能。

import org.apache.commons.codec.binary.Base64;
import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
import javax.crypto.spec.SecretKeySpec;

public class EncryptionService {
    private static final String ALGORITHM = "AES";

    // 生成一个密钥
    public SecretKey generateKey() throws Exception {
        KeyGenerator keyGen = KeyGenerator.getInstance(ALGORITHM);
        keyGen.init(128); // 密钥长度
        return keyGen.generateKey();
    }

    // 加密方法
    public String encrypt(String data, SecretKey key) throws Exception {
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.ENCRYPT_MODE, key);
        byte[] encryptedData = cipher.doFinal(data.getBytes());
        return Base64.encodeBase64String(encryptedData); // 使用 Base64 编码
    }

    // 解密方法
    public String decrypt(String encryptedData, SecretKey key) throws Exception {
        Cipher cipher = Cipher.getInstance(ALGORITHM);
        cipher.init(Cipher.DECRYPT_MODE, key);
        byte[] decryptedData = cipher.doFinal(Base64.decodeBase64(encryptedData));
        return new String(decryptedData);
    }
}

代码解释

  • generateKey():生成 AES 密钥。
  • encrypt():加密给定的数据,并将其返回为 Base64 字符串。
  • decrypt():解密 Base64 字符串,返回原始数据。

4. 编写控制器进行测试

创建一个 EncryptionController 类以测试加密和解密操作。

import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/api/encrypt")
public class EncryptionController {

    private final EncryptionService encryptionService = new EncryptionService();
    private SecretKey secretKey;

    @PostMapping("/generate-key")
    public String generateKey() throws Exception {
        secretKey = encryptionService.generateKey();
        return "Key generated: " + Base64.encodeBase64String(secretKey.getEncoded());
    }

    @PostMapping("/encrypt")
    public String encrypt(@RequestParam String data) throws Exception {
        return encryptionService.encrypt(data, secretKey);
    }

    @PostMapping("/decrypt")
    public String decrypt(@RequestParam String encryptedData) throws Exception {
        return encryptionService.decrypt(encryptedData, secretKey);
    }
}

代码解释

  • generateKey():生成并返回密钥的 Base64 字符串。
  • encrypt():接收数据并返回加密的结果。
  • decrypt():接收加密数据并返回解密的结果。

5. 启动应用并进行测试

运行 Spring Boot 应用,可以使用 Postman 或 Curl 进行测试。

# 生成密钥
curl -X POST http://localhost:8080/api/encrypt/generate-key

# 加密数据
curl -X POST http://localhost:8080/api/encrypt/encrypt?data=HelloWorld

# 解密数据
curl -X POST http://localhost:8080/api/encrypt/decrypt?encryptedData=<your_encrypted_string>

类图

classDiagram
    class EncryptionService {
        +SecretKey generateKey()
        +String encrypt(String data, SecretKey key)
        +String decrypt(String encryptedData, SecretKey key)
    }

    class EncryptionController {
        -EncryptionService encryptionService
        -SecretKey secretKey
        +String generateKey()
        +String encrypt(String data)
        +String decrypt(String encryptedData)
    }

    EncryptionController --> EncryptionService

饼状图

pie
    title AES Encryption Flow
    "Generate Key": 20
    "Encrypt Data": 40
    "Decrypt Data": 40

总结

本文简单介绍了如何在 Spring Boot 应用程序中实现 AES 加密和解密。通过定义一个服务类和控制器,你可以很方便地生成密钥、加密字符串和解密字符串。通过实践这一过程,你不仅可以提高对 Spring Boot 的理解,还能深化对数据加密的认识。希望这篇文章对你有帮助,继续加油!