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 サイトの他の関連記事を参照してください。