Heim  >  Artikel  >  Java  >  In Java geschriebene Microservice-Datenverschlüsselungs- und -entschlüsselungsfunktionen

In Java geschriebene Microservice-Datenverschlüsselungs- und -entschlüsselungsfunktionen

王林
王林Original
2023-08-08 09:37:451586Durchsuche

In Java geschriebene Microservice-Datenverschlüsselungs- und -entschlüsselungsfunktionen

Microservice-Datenverschlüsselungs- und -entschlüsselungsfunktion in Java geschrieben

Im heutigen Internetzeitalter, mit der Popularität der Datenübertragung und dem zunehmenden Risiko des Verlusts sensibler Informationen, wird Datensicherheit immer wichtiger. Der Aufstieg der Microservices-Architektur bietet flexiblere und skalierbarere Lösungen für die Datenverschlüsselung und -entschlüsselung. In diesem Artikel wird erläutert, wie mit Java eine einfache, aber leistungsstarke Funktion zur Verschlüsselung und Entschlüsselung von Microservice-Daten geschrieben wird, und es werden entsprechende Codebeispiele angegeben.

Zuerst müssen wir einen zuverlässigen Verschlüsselungsalgorithmus auswählen. Hier entscheiden wir uns für den AES-Algorithmus (Advanced Encryption Standard), einen sehr beliebten, sicheren und zuverlässigen symmetrischen Verschlüsselungsalgorithmus. Der AES-Algorithmus unterstützt Schlüssellängen von 128 Bit, 192 Bit und 256 Bit. Wir können je nach tatsächlichem Bedarf unterschiedliche Schlüssellängen wählen. Darüber hinaus müssen wir auch einen geeigneten Auffüllmodus und Verschlüsselungsmodus auswählen. Hier entscheiden wir uns für den Auffüllmodus PKCS5Padding und den Verschlüsselungsmodus CBC.

Als nächstes verwenden wir die Kryptografiebibliothek von Java, um Verschlüsselungs- und Entschlüsselungsvorgänge durchzuführen. Zuerst müssen wir einen Schlüssel generieren und ihn an einem sicheren Ort aufbewahren. Hier verwenden wir die von Java bereitgestellte KeyGenerator-Klasse, um Schlüssel zu generieren.

import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;

public class EncryptionUtils {
    public static SecretKey generateKey() throws NoSuchAlgorithmException {
        KeyGenerator keyGenerator = KeyGenerator.getInstance("AES");
        keyGenerator.init(128);
        return keyGenerator.generateKey();
    }
}

Nachdem wir den Schlüssel generiert haben, können wir ihn verwenden, um Verschlüsselungs- und Entschlüsselungsvorgänge durchzuführen. Unten finden Sie Beispielcode, der einen Schlüssel zum Verschlüsseln von Daten verwendet.

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.Base64;

public class EncryptionUtils {
    public static String encryptData(String data, SecretKey secretKey, String initVector) throws GeneralSecurityException {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.ENCRYPT_MODE, secretKey, new IvParameterSpec(initVector.getBytes(StandardCharsets.UTF_8)));
        byte[] encryptedData = cipher.doFinal(data.getBytes(StandardCharsets.UTF_8));
        return Base64.getEncoder().encodeToString(encryptedData);
    }
}

Im obigen Code verwenden wir die Base64-Kodierung, um die verschlüsselten Daten zu konvertieren und die Übertragung und Speicherung im Netzwerk zu erleichtern. Als nächstes geben wir Beispielcode zum Entschlüsseln von Daten mithilfe eines Schlüssels.

import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.security.GeneralSecurityException;
import java.util.Base64;

public class EncryptionUtils {
    public static String decryptData(String encryptedData, SecretKey secretKey, String initVector) throws GeneralSecurityException {
        Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
        cipher.init(Cipher.DECRYPT_MODE, secretKey, new IvParameterSpec(initVector.getBytes(StandardCharsets.UTF_8)));
        byte[] decryptedData = cipher.doFinal(Base64.getDecoder().decode(encryptedData));
        return new String(decryptedData, StandardCharsets.UTF_8);
    }
}

Im obigen Code verwenden wir Base64-Dekodierung, um die verschlüsselten Daten wiederherzustellen.

Schließlich können wir die oben genannten Verschlüsselungs- und Entschlüsselungsfunktionen in eine Microservice-API kapseln, um andere Systemaufrufe zu erleichtern. Unten finden Sie einen einfachen Microservice-Beispielcode.

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

import javax.crypto.SecretKey;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;

@RestController
@RequestMapping("/encryption")
public class EncryptionController {
    private SecretKey secretKey;

    public EncryptionController() throws NoSuchAlgorithmException {
        this.secretKey = EncryptionUtils.generateKey();
    }

    @PostMapping("/encrypt")
    public Map<String, String> encryptData(@RequestBody Map<String, String> data) throws GeneralSecurityException {
        String encryptedData = EncryptionUtils.encryptData(data.get("data"), secretKey, data.get("initVector"));
        Map<String, String> result = new HashMap<>();
        result.put("encryptedData", encryptedData);
        return result;
    }

    @PostMapping("/decrypt")
    public Map<String, String> decryptData(@RequestBody Map<String, String> data) throws GeneralSecurityException {
        String decryptedData = EncryptionUtils.decryptData(data.get("encryptedData"), secretKey, data.get("initVector"));
        Map<String, String> result = new HashMap<>();
        result.put("decryptedData", decryptedData);
        return result;
    }
}

Im obigen Code verwenden wir das Spring-Framework, um eine einfache HTTP-Schnittstelle zu implementieren, in der die /encryption/encrypt接口用于加密数据,/encryption/decryptSchnittstelle zum Entschlüsseln von Daten verwendet wird. Die Anforderungsparameter verwenden das JSON-Format und die verschlüsselten oder entschlüsselten Ergebnisse werden zurückgegeben.

Zusammenfassend lässt sich sagen, dass wir mit Java eine einfache, aber leistungsstarke Microservice-Datenverschlüsselungs- und -entschlüsselungsfunktion geschrieben haben. Verwenden Sie den AES-Algorithmus zum Verschlüsseln und Entschlüsseln von Daten und kapseln Sie sie in eine Microservice-API, die von anderen Systemen aufgerufen werden kann. Dies kann die Sicherheit der Daten während der Übertragung und Speicherung gewährleisten und die Gesamtsicherheit des Systems verbessern.

Das obige ist der detaillierte Inhalt vonIn Java geschriebene Microservice-Datenverschlüsselungs- und -entschlüsselungsfunktionen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn