요르딩딩

[JAVA] 인코더, 디코더 본문

[Java]

[JAVA] 인코더, 디코더

요르딩딩 2021. 4. 5. 20:50
728x90
반응형

Java에서 Base64 인코딩, 디코딩 기능을 제공하는 유틸리티를 알아보겠습니다.

Base64

Base64는 인코딩 방식 중에 하나로 문자 코드에 영향을 받지 않은 64개의 아스키 영역의 문자들로 이루어진 문자열로 변경하는 것을 말한다.

데이터가 여러 플랫폼에서 통신하면 플랫폼의 차이로 데이터가 깨질 수도 있다.

이를 방지하기 위해 아스키 문자열이라는 공통 캐릭터를 사용하여 안전하게 데이터를 송수신한다.

Base64의 본래 뜻은 64진법이라는 뜻이다. 8진수는 octet digits 또는 base8, 16진수는 hexdecimal 또는 base16이 된다.

 

Ex) B/E ------(G/W)--------> B/E : 데이터를 보낼떄 데이터가 깨질 수 있기 떄문에, 인코딩하여 보내고 디코딩하여 사용한다.

 

Tip ) 디코딩한 값을 new String(decodeByte) 하여 스트링으로 변환해주면 본래의 값을 확인할 수 있다.

 

BASE64
8비트 바이너리(2진) 데이터(예를 들어 실행파일이나, ZIP파일 등)를 문자 코드에 영향을 받지 않는
공통 ASCII 영역의 문자들로만 이루어진 일련의 스트링으로 바꾸는 인코딩 방식을 가리키는 개념
1. 인코딩
: 바이너리 데이터(Binary byte[]) -> ASCII 스트링(String)
문자나 기호들의 집합을 컴퓨터에 저장하거나 통신에 사용할 목적으로 부호화하는 방법이다
String file = new String(Base64.getEncoder().encode((byte[])fileInfo.get(CommCode.ATCH_FILE))));
2. 디코딩
: ASCII 스트링(String) -> 바이너리 데이터(Binary byte[])
복호화(디코딩 : Decoding)를 하면 본래의 문자나 기호를 나타내는 문자코드(Character Code)
byte[] fileByte = Base64.getDecoder().decode(JsonUtil.toHashMapObject(JsonUtil.toJson(result.getResultData())).get("wd_atch_file").toString());

byte[] fileByte = Base64.getDecoder().decode((String)param.get(CommCode.WD_ATCH_FILE))

즉, 인코딩을 하여 ASCII 문자열로 바꾸는 이유는 ASCII코드가 A-Z,a-z,0-9,/+만을 사용하기 때문에,

문자 포맷이 달라 데이터를 손상시킬 수 있는 시스템간에 안정적으로 전송될 수 있기 때문이다.

 

engaspect.tistory.com/27

 

Spring에서 Json 정리

Map - JSON간 변환 writeValueAsString() writeValueAsString( value ) value: String 타입으로 변환할 대상 readValue() readValue( arg, type ) arg: 지정된 타입으로 변환할 대상 type: 대상을 어떤 타입으로..

engaspect.tistory.com

 

728x90
반응형

'[Java]' 카테고리의 다른 글

[JAVA] Coalesce (isNull과 친척관계)  (0) 2021.04.06
[JAVA Util] ConvertUtils  (0) 2021.04.06
Map - Json String 변환  (0) 2021.04.06
String.join(", ", 배열)  (0) 2021.02.24
Arrays.asList(배열)  (0) 2021.02.17
Comments