우물안에서 보는 하늘도 맑다

챗gtp에게 Spring boot 와 tomcat web 간에 암호화 복호화 방법을 물어봄 본문

카테고리 없음

챗gtp에게 Spring boot 와 tomcat web 간에 암호화 복호화 방법을 물어봄

몽염이 2023. 4. 14. 14:45
반응형

Q. Spring boot와 tomcat web 간에 암호화된 json을 주고 받는 예제를 보여줘

A. Spring Boot와 Tomcat 웹 서버 간에 암호화된 JSON을 주고 받는 예제를 아래와 같이 보여드립니다. 이 예제에서는 Jasypt(Java Simplified Encryption) 라이브러리를 사용하여 암호화와 복호화를 수행합니다. Jasypt는 Spring Boot와 Tomcat과 같은 Java 애플리케이션에서 간단하게 암호화를 수행하기 위한 라이브러리로 널리 사용됩니다.

1. 라이브러리 의존성 추가
pom.xml 파일에 Jasypt 라이브러리의 의존성을 추가합니다.

<!-- pom.xml -->
<dependencies>
    <!-- Spring Boot Starter Web -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Jasypt -->
    <dependency>
        <groupId>org.jasypt</groupId>
        <artifactId>jasypt</artifactId>
        <version>1.9.5</version>
    </dependency>
</dependencies>

2. 암호화된 JSON 생성
Jasypt를 사용하여 JSON 값을 암호화합니다.

import org.jasypt.util.text.BasicTextEncryptor;

public class JsonEncryptionUtil {
    private static final String SECRET_KEY = "your-secret-key"; // 암호화에 사용할 시크릿 키

    public static String encryptJson(String json) {
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        encryptor.setPassword(SECRET_KEY);
        return encryptor.encrypt(json);
    }

    public static String decryptJson(String encryptedJson) {
        BasicTextEncryptor encryptor = new BasicTextEncryptor();
        encryptor.setPassword(SECRET_KEY);
        return encryptor.decrypt(encryptedJson);
    }
}

3. Spring Boot 웹 애플리케이션에서 암호화된 JSON 주고 받기
Spring Boot 웹 애플리케이션에서 암호화된 JSON을 주고 받는 예제입니다.

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

@RestController
public class JsonController {
    @PostMapping("/sendJson")
    public String sendJson(@RequestBody String json) {
        // JSON을 암호화하여 전송
        String encryptedJson = JsonEncryptionUtil.encryptJson(json);
        // 암호화된 JSON 반환
        return encryptedJson;
    }

    @PostMapping("/receiveJson")
    public String receiveJson(@RequestBody String encryptedJson) {
        // 받은 암호화된 JSON을 복호화하여 처리
        String decryptedJson = JsonEncryptionUtil.decryptJson(encryptedJson);
        // 복호화된 JSON 반환
        return decryptedJson;
    }
}

4. Tomcat 웹 서버에서 암호화된 JSON 주고 받기
Tomcat 웹 서버에서 암호화된 JSON을 주고 받는 예제입니다.

import org.apache.commons.io.IOUtils;

import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class JsonClient {
    public static void main(String[] args) throws IOException {
        // 보낼 JSON
        String json = "{\"name\":\"John\",\"age\":30}";

        // JSON을 암호화하여 전송
        String encryptedJson = JsonEncryptionUtil.encryptJson(json);

        // 서버 URL
        URL url = new URL("http://localhost:8080/receiveJson");
        HttpURLConnection connection = (HttpURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setRequestMethod("POST");

        // 암호화된 JSON 전송
        try (OutputStream outputStream = connection.getOutputStream()) {
            outputStream.write(encryptedJson.getBytes());
            outputStream.flush();
        }

        // 응답 받기
        try (InputStream inputStream = connection.getInputStream()) {
            String response = IOUtils.toString(inputStream, "UTF-8");
            // 받은 암호화된 JSON을 복호화하여 처리
            String decryptedJson = JsonEncryptionUtil.decryptJson(response);
            System.out.println("Decrypted JSON: " + decryptedJson);
        }

        // 연결 닫기
        connection.disconnect();
    }
}


위의 예제는 Tomcat 웹 서버에서 Spring Boot 웹 애플리케이션으로 암호화된 JSON을 전송하고, Spring Boot 웹 애플리케이션에서는 받은 암호화된 JSON을 복호화하여 처리하는 예제입니다. 이를 통해 Spring Boot와 Tomcat 웹 서버 간에 암호화된 JSON을 주고 받을 수 있습니다.

반응형