[java] 롬복을 사용하여 자바 암호화와 복호화를 어떻게 구현하고 사용할 수 있나요?

암호화와 복호화는 데이터 보안을 위해 중요한 작업입니다. 자바에서 롬복 라이브러리를 사용하면 암호화와 복호화를 쉽게 구현할 수 있습니다.

먼저, 롬복을 프로젝트에 추가해야 합니다. Maven이나 Gradle과 같은 의존성 관리 도구를 사용하면 간단하게 추가할 수 있습니다. 다음은 Maven을 사용하는 예시입니다.

<dependency>
  <groupId>org.projectlombok</groupId>
  <artifactId>lombok</artifactId>
  <version>1.18.20</version>
  <scope>provided</scope>
</dependency>

롬복을 프로젝트에 추가한 후, 암호화와 복호화를 위한 클래스를 작성해야 합니다. 롬복을 사용하면 간결하고 가독성이 높은 코드를 작성할 수 있습니다. 예를 들어, 암호화를 위한 클래스는 다음과 같이 작성할 수 있습니다.

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor
public class EncryptionService {
    private static final String ALGORITHM = "AES";
    private static final String TRANSFORMATION = "AES/ECB/PKCS5Padding";
    private static final String DEFAULT_KEY = "YourSecretKey";

    private String secretKey;

    public String encrypt(String data) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(getSecretKey().getBytes(StandardCharsets.UTF_8), ALGORITHM);
        Cipher cipher = Cipher.getInstance(TRANSFORMATION);
        cipher.init(Cipher.ENCRYPT_MODE, secretKeySpec);
        return Base64.getEncoder().encodeToString(cipher.doFinal(data.getBytes(StandardCharsets.UTF_8)));
    }

    public String decrypt(String encryptedData) throws Exception {
        SecretKeySpec secretKeySpec = new SecretKeySpec(getSecretKey().getBytes(StandardCharsets.UTF_8), ALGORITHM);
        Cipher cipher = Cipher.getInstance(TRANSFORMATION);
        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
        return new String(cipher.doFinal(Base64.getDecoder().decode(encryptedData)), StandardCharsets.UTF_8);
    }

    public static EncryptionService getDefaultEncryptionService() {
        return new EncryptionService(DEFAULT_KEY);
    }
}

위 코드는 AES 알고리즘을 사용하여 데이터를 암호화하고 복호화하는 EncryptionService 클래스입니다. 기본적으로 ECB 모드와 PKCS5 패딩을 사용합니다. 또한, 암호화에 사용할 비밀키를 설정하거나 getDefaultEncryptionService 메서드를 사용하여 기본 키를 사용할 수 있습니다.

이제 암호화와 복호화를 사용하는 예시 코드를 작성해보겠습니다.

public class Main {
    public static void main(String[] args) throws Exception {
        EncryptionService encryptionService = EncryptionService.getDefaultEncryptionService();
        
        String data = "Hello, World!";
        String encryptedData = encryptionService.encrypt(data);
        String decryptedData = encryptionService.decrypt(encryptedData);
        
        System.out.println("Original Data: " + data);
        System.out.println("Encrypted Data: " + encryptedData);
        System.out.println("Decrypted Data: " + decryptedData);
    }
}

위와 같은 방법으로 자바에서 롬복을 사용하여 암호화와 복호화를 구현하고 사용할 수 있습니다. 롬복을 통해 보다 간결하고 유지 보수하기 쉬운 코드를 작성할 수 있으며, 암호화와 복호화를 쉽게 처리할 수 있습니다.

참고 자료