본문으로 건너뛰기

암복호화프로그램

프로그램용도구현할 Java인터페이스적용할 설정화면
암복호화프로그램SecurityProcess, SecurityBlockProcess기본설정관리>암호화정보

암복호화 프로그램은 기관 및 시스템 전문에서 암복호화를 사용하는 경우 개발한다.

암호화그룹에 등록한 정보(EX. 암호화키 길이, 인코딩 방식 등)가 필요한 경우 SecurityBlockProcess를 구현하고, 그렇지 않은 경우에는 SecurityProcess를 구현한다.

적용 시, 요청 시에는 필드를 복호화하고, 응답 시에는 다시 암호화하여 전송하게 된다.

정보

만약 BXI에서 제공하는 SEED-256, ARIA-256, AES-256, T-DES 등의 기본 암호화 알고리즘을 사용하는 경우에는 별도의 프로그램 개발 없이 BXI에서 제공하는 프로그램을 사용할 수 있다. (ex. AesCipher, AesSecurity 등)

개발방법

암호화 API

전문이나 특정 필드의 데이터를 암호화하고 Encoding한다.

@Override
public byte[] encrypt(String secretKey, String plainText, String charsetName) {
try {
return encrypt(secretKey, plainText.getBytes(charsetName));
} catch (UnsupportedEncodingException e) {
throw new IllegalArgumentException(e);
}
}

@Override
public byte[] encrypt(String secretKey, byte[] plainText) {
byte[] result = Base64.getEncoder().encode(plainText);
logger.debug("plain text : {} -> encrypted text : {}",
new String(plainText, StandardCharsets.UTF_8), new String(result, StandardCharsets.UTF_8));
return result;
}

☑ 입력

  • secretKey : 암호화 키
  • plainText : plain 텍스트
  • charsetName : 캐릭터셋

☑ 출력

  • 암호화하여 Encoding한 데이터

복호화 API

암호화된 데이터를 Decoding하고 복호화한다.

@Override
public byte[] decrypt(String secretKey, String encryptedText, String charsetName) {
try {
return decrypt(secretKey, encryptedText.getBytes(charsetName));
} catch (UnsupportedEncodingException e) {
throw new IllegalArgumentException(e);
}
}

@Override
public byte[] decrypt(String secretKey, byte[] encryptedText) {
byte[] result = Base64.getDecoder().decode(encryptedText);
logger.debug("encrypted text : {} -> plain text : {}",
new String(encryptedText, StandardCharsets.UTF_8), new String(result, StandardCharsets.UTF_8));

return result;
}

☑ 입력

  • secretKey : 암호화 키
  • encryptedText : 암호화된 텍스트
  • charsetName : 캐릭터셋

☑ 출력

  • 복호화 데이터

전체 예제

package bxi.extension.sample;

import java.io.UnsupportedEncodingException;
import java.nio.charset.StandardCharsets;
import java.util.Base64;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component;

import bxi.api.SecurityProcess;

@Component
public class SecurityProcessImpl implements SecurityProcess {
private final Logger logger = LoggerFactory.getLogger(this.getClass());

@Override
public byte[] encrypt(String secretKey, String plainText, String charsetName) {
try {
return encrypt(secretKey, plainText.getBytes(charsetName));
} catch (UnsupportedEncodingException e) {
throw new IllegalArgumentException(e);
}
}

@Override
public byte[] encrypt(String secretKey, byte[] plainText) {
byte[] result = Base64.getEncoder().encode(plainText);
logger.debug("plain text : {} -> encrypted text : {}",
new String(plainText, StandardCharsets.UTF_8), new String(result, StandardCharsets.UTF_8));

return result;
}

@Override
public byte[] decrypt(String secretKey, String encryptedText, String charsetName) {
try {
return decrypt(secretKey, encryptedText.getBytes(charsetName));
} catch (UnsupportedEncodingException e) {
throw new IllegalArgumentException(e);
}
}

@Override
public byte[] decrypt(String secretKey, byte[] encryptedText) {
byte[] result = Base64.getDecoder().decode(encryptedText);
logger.debug("encrypted text : {} -> plain text : {}",
new String(encryptedText, StandardCharsets.UTF_8), new String(result, StandardCharsets.UTF_8));

return result;
}
}