Maison  >  Article  >  Java  >  Fonctions de chiffrement et de déchiffrement des données de microservice écrites en Java

Fonctions de chiffrement et de déchiffrement des données de microservice écrites en Java

王林
王林original
2023-08-08 09:37:451548parcourir

Fonctions de chiffrement et de déchiffrement des données de microservice écrites en Java

Fonction de cryptage et de décryptage des données par microservice écrite en Java

À l'ère d'Internet d'aujourd'hui, avec la popularité de la transmission de données et le risque croissant de fuite d'informations sensibles, la sécurité des données est devenue de plus en plus importante. L’essor de l’architecture des microservices offre des solutions plus flexibles et évolutives pour le chiffrement et le déchiffrement des données. Cet article explique comment utiliser Java pour écrire une fonction de chiffrement et de déchiffrement de données de microservice simple mais puissante, et donne des exemples de code correspondants.

Tout d’abord, nous devons choisir un algorithme de cryptage fiable. Ici, nous choisissons d'utiliser l'algorithme AES (Advanced Encryption Standard), qui est un algorithme de chiffrement symétrique très populaire, sûr et fiable. L'algorithme AES prend en charge des longueurs de clé de 128 bits, 192 bits et 256 bits. Nous pouvons choisir différentes longueurs de clé en fonction des besoins réels. De plus, nous devons également choisir un mode de remplissage et un mode de cryptage appropriés. Ici, nous choisissons d'utiliser le mode de remplissage PKCS5Padding et le mode de cryptage CBC.

Ensuite, nous utilisons la bibliothèque de cryptographie de Java pour effectuer des opérations de cryptage et de décryptage. Tout d’abord, nous devons générer une clé et la conserver dans un endroit sûr. Ici, nous utilisons la classe KeyGenerator fournie par Java pour générer des clés.

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();
    }
}

Après avoir généré la clé, nous pouvons utiliser la clé pour effectuer des opérations de cryptage et de décryptage. Vous trouverez ci-dessous un exemple de code qui utilise une clé pour chiffrer les données.

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);
    }
}

Dans le code ci-dessus, nous utilisons l'encodage Base64 pour convertir les données cryptées afin de faciliter la transmission et le stockage sur le réseau. Ensuite, nous donnons un exemple de code pour déchiffrer des données à l'aide d'une clé.

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);
    }
}

Dans le code ci-dessus, nous utilisons le décodage Base64 pour restaurer les données cryptées.

Enfin, nous pouvons encapsuler les fonctions de cryptage et de décryptage ci-dessus dans une API de microservice pour faciliter d'autres appels système. Vous trouverez ci-dessous un exemple de code de microservice simple.

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;
    }
}

Dans le code ci-dessus, nous utilisons le framework Spring pour implémenter une interface HTTP simple, dans laquelle l'interface /encryption/encrypt接口用于加密数据,/encryption/decryptest utilisée pour décrypter les données. Les paramètres de la requête utilisent le format JSON et les résultats chiffrés ou déchiffrés sont renvoyés.

Pour résumer, nous avons écrit une fonction de cryptage et de déchiffrement de données de microservice simple mais puissante en utilisant Java. Utilisez l'algorithme AES pour chiffrer et déchiffrer les données, et encapsulez-les dans une API de microservice qui peut être appelée par d'autres systèmes. Cela peut garantir la sécurité des données pendant la transmission et le stockage et améliorer la sécurité globale du système.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn