Spring Boot中使用AES算法加密数据

黑暗骑士酱 2023-06-14 ⋅ 17 阅读

在Spring Boot中,我们通常会遇到对敏感数据进行加密的需求。AES(Advanced Encryption Standard)是一种常用的对称加密算法,它可以通过相同的密钥进行加密和解密,保证数据的机密性。

本文将介绍如何在Spring Boot中使用AES算法加密数据,并在具体实现中加入一些内容丰富的提示。

1. 引入相关依赖

pom.xml文件中,我们首先需要添加依赖来支持AES算法的加密解密:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>

2. 配置密钥

在Spring Boot的配置文件中,我们需要配置用于加密解密的密钥。可以使用任意长度的字符串作为密钥,但是要确保足够安全。

# application.properties
aes.key=abcdefghijklmnopqrstuvwxyz123456

3. 编写加密解密工具类

在Spring Boot项目中,编写一个加密解密工具类来封装AES算法的具体实现。该工具类可以提供加密和解密两个方法:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.security.crypto.codec.Hex;
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;

public class AESUtil {
    
    @Value("${aes.key}")
    private static String key;

    public static String encrypt(String data) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
        byte[] encryptedData = cipher.doFinal(data.getBytes());
        return new String(Hex.encode(encryptedData));
    }

    public static String decrypt(String encryptedData) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(key.getBytes(), "AES");
        Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
        byte[] decryptedData = cipher.doFinal(Hex.decode(encryptedData.getBytes()));
        return new String(decryptedData);
    }
}

4. 使用加密解密工具类

现在我们可以在代码中使用刚刚编写的加密解密工具类了。以下是一个简单的示例:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Application {

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Application.class, args);

        String originalData = "Hello, World!";
        System.out.println("Original Data: " + originalData);

        String encryptedData = AESUtil.encrypt(originalData);
        System.out.println("Encrypted Data: " + encryptedData);

        String decryptedData = AESUtil.decrypt(encryptedData);
        System.out.println("Decrypted Data: " + decryptedData);
    }
}

5. 运行并测试

现在可以运行我们的Spring Boot应用程序,并测试加密解密功能是否正常工作。在控制台上,我们应该能够看到输出的加密和解密数据。

结论

通过本文,我们学习了如何在Spring Boot中使用AES算法加密数据。虽然本文只是一个简单的示例,但可以为你提供一个良好的起点来实现更复杂的加密解密需求。

注意事项:在实际应用中,为了确保数据的安全性,密钥需要妥善保管。此外,仅加密数据可能不足以保证数据的完整性和可信性,你可能还需要其他的数据安全措施。

希望本文对你有所帮助!如有疑问,请随时留言。


全部评论: 0

    我有话说: