ホームページ  >  記事  >  Java  >  Java で記述されたマイクロサービス データの暗号化および復号化関数

Java で記述されたマイクロサービス データの暗号化および復号化関数

王林
王林オリジナル
2023-08-08 09:37:451548ブラウズ

Java で記述されたマイクロサービス データの暗号化および復号化関数

Java で記述されたマイクロサービス データの暗号化および復号化機能

今日のインターネット時代では、データ送信の普及と機密情報の漏洩リスクの増大により、データ セキュリティが重要になります。ますます重要になってきています。マイクロサービス アーキテクチャの台頭により、データの暗号化と復号化のための、より柔軟でスケーラブルなソリューションが提供されます。この記事では、Java を使用してシンプルかつ強力なマイクロサービス データの暗号化および復号化関数を作成する方法を紹介し、対応するコード例を示します。

まず、信頼できる暗号化アルゴリズムを選択する必要があります。ここでは、非常に人気があり、安全で信頼性の高い対称暗号化アルゴリズムである AES (Advanced Encryption Standard) アルゴリズムを使用することを選択します。 AES アルゴリズムは 128 ビット、192 ビット、256 ビットのキー長をサポートしており、実際のニーズに応じてさまざまなキー長を選択できます。さらに、適切なパディング モードと暗号化モードを選択する必要もあります。ここでは、PKCS5Padding パディング モードと CBC 暗号化モードを使用することを選択します。

次に、Java の暗号化ライブラリを使用して、暗号化と復号化の操作を実行します。まず、キーを生成し、安全な場所に保管する必要があります。ここでは、Java が提供する KeyGenerator クラスを使用してキーを生成します。

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

キーを生成した後、そのキーを使用して暗号化および復号化操作を実行できます。以下は、キーを使用してデータを暗号化するサンプルコードです。

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

上記のコードでは、Base64 エンコードを使用して暗号化されたデータを変換し、ネットワーク上での送信と保存を容易にします。次に、キーを使用してデータを復号化するコードの例を示します。

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

上記のコードでは、Base64 デコードを使用して暗号化されたデータを復元します。

最後に、上記の暗号化関数と復号化関数をマイクロサービス API にカプセル化して、他のシステム コールを容易にすることができます。以下は簡単なマイクロサービスのコード例です。

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

上記のコードでは、Spring フレームワークを使用して単純な HTTP インターフェイスを実装しています。/encryption/encrypt インターフェイスは、データの暗号化に使用されます (/encryption/decrypt)。 インターフェイスはデータを復号化するために使用されます。リクエストパラメータはJSON形式を使用し、暗号化または復号化された結果が返されます。

要約すると、Java を使用して、シンプルだが強力なマイクロサービス データの暗号化および復号化関数を作成します。 AES アルゴリズムを使用してデータを暗号化および復号化し、他のシステムから呼び出せるマイクロサービス API にカプセル化します。これにより、送信中および保存中のデータのセキュリティが確保され、システム全体のセキュリティが向上します。

以上がJava で記述されたマイクロサービス データの暗号化および復号化関数の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。