안녕하세요!
1> BASE 64 의미
BASE 64는 8bit 의 이진 데이터를 공통 ASCII 문자들로 이루어진 문자열로 바꾸는 인코딩 방식입니다.
즉, 바이너리 데이터를String형태로 변경하는 의미입니다.
(바이너리 데이터를 공통 64개의 ASCII 영역의 문자열로 변경)
2> 사용하는 목적 : 신뢰할 수 없는 통신에서도 바이너리 data를 안전하게 전송하기 위해 사용합니다.
Base 64를 사용하는 이유는 BASE64 인코딩을 하면 길이가 33%정도 늘어남에도 불구하고,
ASCII 코드는 7bit 인코딩인데 나머지 1bit가 시스템 별로 상이하게 처리하지만
base64는 64개로 안전한 출력 문자만 사용한다고 합니다.
또한 암호화 시에 특수 문자나 기호들이 생기면서 데이터 송수신에서 오류가 생길 수 있는 부분을
base64를 이용하여서 원래의 텍스르로 변환할 수 있다고 합니다.
3> BASE64 인코딩 예시
‘E’ 라는 문자를 BASE64 인코딩을 하면
우선 ASCII 코드값에서 ‘E’ 문자에 해당되는 값을 찾습니다.
10진수 : 69
16진수 : 0x45
해당값을 2진수로 표시하여 8bit로 표현하면 01000101 이 나오고,
이 값을 앞에서부터 6bit 로 자르면 010001 십진수로 17이 됩니다.
17은 BASE64 변환표에서 ‘R’로 매핑되므로 ‘E’ 를 BASE64 인코딩하면 ‘R’이 됩니다.
이와 같은 방식으로 문자열이 아래와 같이 인코딩 됩니다.
자바에서는 BASE64 인코딩, 디코딩 방식은 해당 소스와 같이 내장되어 있는 함수를 호출하여 사용합니다.
import org.apache.commons.codec.binary.Base64;
/**
* base64 encode, decode test
* @author kdarkdev *
*/
public class Base64Test { public static void main(String args[])
{
String text = "kdarkdev 김이박"; /* base64 encoding */
byte[] encoded = Base64.encodeBase64(text.getBytes()); /* base64 decoding */
byte[] decoded = Base64.decodeBase64(encoded);
System.out.println("인코딩 전 : " + text);
System.out.println("인코딩 text : " + new String(encoded));
System.out.println("디코딩 text : " + new String(decoded)); }
}
결과
인코딩 전 : kdarkdev 김이박
인코딩 text : a2RhcmtkZXYg6rmA7J2067CV
디코딩 text : kdarkdev 김이박
저도 필요해서 찾아봐서 정리하였는데 도움이 되셨으면 해서 작성하였습니다~!
조금이나마 도움이 되셨으면 좋아요 하트♥나 구독 부탁드립니다~!
파이팅 하시고 좋은 하루 되세요!!
아래 인코딩, 디코딩 방식도 필요하시면 참고하세요~
https://lovefor-you.tistory.com/173
[Java] 인코딩, 디코딩 개념 (유니코드, EUC-KR, UTF-8)
컴퓨터가 문자를 이해하기 위해 숫자로 변환되어 저장하는 방식에서 어떤 기준으로 저장하고 이해하는 것일까요? 문자를 코드로 변환하는 방식을 ‘문자 인코딩’이라고 하고, 거꾸로 코드를 문자로 변..
lovefor-you.tistory.com
'IT ▶ > Java & Web' 카테고리의 다른 글
[Java 오류] Tomcat 서버 오류 java.lang.ClassNotFoundException 오류 해결방법 (0) | 2019.11.29 |
---|---|
[자바 조건문] Java SWITCH문 사용 방법 (0) | 2019.11.12 |
[Java] 인코딩, 디코딩 개념 (유니코드, EUC-KR, UTF-8) (0) | 2019.10.11 |
[Java] String 문자열 자르기, 치환하기 – substring, replace 함수 사용 (0) | 2019.10.08 |
[Java] Random() 클래스, String 문자열 합치기(concat, append, +) 사용 방법 (0) | 2019.09.30 |