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 프레임워크를 사용하여 /encryption/encrypt
接口用于加密数据,/encryption/decrypt
인터페이스를 사용하여 데이터를 해독하는 간단한 HTTP 인터페이스를 구현합니다. 요청 매개변수는 JSON 형식을 사용하며 암호화되거나 복호화된 결과가 반환됩니다.
결론적으로 우리는 Java를 사용하여 간단하지만 강력한 마이크로서비스 데이터 암호화 및 복호화 기능을 작성했습니다. AES 알고리즘을 사용하여 데이터를 암호화 및 해독하고 이를 다른 시스템에서 호출할 수 있는 마이크로서비스 API로 캡슐화합니다. 이를 통해 전송 및 저장 중 데이터 보안을 보장하고 시스템의 전반적인 보안을 향상시킬 수 있습니다.
위 내용은 Java로 작성된 마이크로서비스 데이터 암호화 및 복호화 기능의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!