Java数据加密存入数据库

在日常的应用程序开发中,对用户的敏感数据进行加密存储是非常重要的安全措施。Java提供了丰富的加密算法库,我们可以利用这些工具来对数据进行加密,然后再存入数据库中。本文将介绍如何使用Java进行数据加密,并将加密后的数据存入数据库。

加密算法

在Java中,常用的加密算法有对称加密和非对称加密两种。对称加密使用相同的密钥进行加密和解密,非对称加密使用公钥加密、私钥解密的方式。在本文中,我们将使用对称加密算法AES进行数据加密。

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.util.Base64;

public class AESUtil {

    private static final String KEY = "mysecretkey12345";

    public static String encrypt(String value) {
        try {
            Cipher cipher = Cipher.getInstance("AES");
            SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), "AES");
            cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
            byte[] encrypted = cipher.doFinal(value.getBytes());
            return Base64.getEncoder().encodeToString(encrypted);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }

    public static String decrypt(String value) {
        try {
            Cipher cipher = Cipher.getInstance("AES");
            SecretKeySpec secretKeySpec = new SecretKeySpec(KEY.getBytes(), "AES");
            cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
            byte[] decrypted = cipher.doFinal(Base64.getDecoder().decode(value));
            return new String(decrypted);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}

数据存储

接下来,我们将使用上面定义的AESUtil类对数据进行加密,并将加密后的数据存入数据库中。

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;

public class DatabaseUtil {

    public static void saveEncryptedData(String data) {
        String encryptedData = AESUtil.encrypt(data);

        try {
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password");
            String query = "INSERT INTO mytable (encrypted_data) VALUES (?)";
            PreparedStatement pstmt = conn.prepareStatement(query);
            pstmt.setString(1, encryptedData);
            pstmt.executeUpdate();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

示意图

下面是使用mermaid语法绘制的饼状图和甘特图示意图:

pie
    title Data Distribution
    "Data 1": 40
    "Data 2": 25
    "Data 3": 35
gantt
    title Data Processing
    dateFormat  YYYY-MM-DD
    section Encryption
    Encrypt Data        :done, encrypt1, 2022-01-01, 3d
    section Storage
    Store Encrypted Data : active, storage1, after encrypt1, 2d

结语

通过本文的介绍,我们了解了如何使用Java进行数据加密,并将加密后的数据存入数据库中。加密算法的选择和数据存储的方式都是非常重要的,只有合理使用加密工具和安全存储数据,才能有效保护用户的隐私信息。希望本文对您有所帮助!