03.업/01.자바

base64인코딩 디코딩

봄날의차 2023. 6. 8. 09:45
package egovframework.cals.cmm.web;

import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;

import javax.xml.bind.DatatypeConverter;

import org.apache.tomcat.util.codec.binary.Base64;

public class Base64Test {

	public static String doEncodeBase64(String base64EncodedString){
        byte[] decodedBytes = Base64.decodeBase64(base64EncodedString);
        String originalString = new String(decodedBytes, StandardCharsets.UTF_8);

        System.out.println("originalString:"+originalString);
        return originalString;
	}

	public static Map<String, Object> doDecodeBase64(String testText){
		byte[] testToByte = testText.getBytes();

		String encodeByte = DatatypeConverter.printBase64Binary(testToByte);
		byte[] decodeByte = DatatypeConverter.parseBase64Binary(encodeByte);

		Map<String, Object> map = new HashMap<String, Object>();
		System.out.println("인코딩 전 : " + testText);
		System.out.println("인코딩  : " + encodeByte);
		System.out.println("디코딩  : " + new String(decodeByte));
		map.put("encodeStr", encodeByte);
		map.put("dncodeStr", new String(decodeByte));
		return map;
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
      String base64EncodedString = "ㅊㅊㅊㅊㅊㅊㅊㅊㅊㅊㅊㅊㅊㅊㅊㅊUW==";
      String encodeStr = Base64Test.doEncodeBase64(base64EncodedString);
      System.out.println("encodeStr:"+encodeStr);

      String testText = "C:\\data\\xxxxx\\data\\aaaaa\\D9999999\\qwerr\\Y3\\(T)AAAA-ㅁㅁㅁㅁ 도로건설공사\\도면\\C토목_도로\\000ㄴㄴㄴ종합\\01ㅁㅁㅁㅁ종합계획도\\01ㅉㅉㅉㅉㅉ평면도";
      Map<String, Object> map = Base64Test.doDecodeBase64(testText);
      System.out.println("encodeStr:"+(String)map.get("encodeStr"));
      System.out.println("dncodeStr:"+(String)map.get("dncodeStr"));

	}

}

>>결과<<

originalString:C0010101-002-1.악양교.KOQ
encodeStr:C0010101-002-1.악양교.KOQ
인코딩 전 : C:\data\aaaaa\data\dddd\ㅁ9999999\ㅇㅇㅇㅇ\ㅁㅁ\(T)ㅁㅁㅁㅁ 도로건설공사\도면\C토목_ㅁㅁ\000ㅇㅇㅇ\01ㅇㅇ계획도\01ㅇㅇ평면도
인코딩  : ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁyMDEwMDA3XFkzXChUKeuMgOyghC3sspzslYjqsIQg64+E66Gc6rG07ISk6rO17IKsXOuPhOuptFxD7Yag66qpX+uPhOuhnFwwMDDsl7DqsrDsooXtlalcMDHsl7DqsrDsooXtlanqs4Ttmo3rj4RcMDHsl7DqsrDsooXtlanqs4Ttmo3tj4nrqbTrj4Q=
디코딩  : C:\data\citis5\data\edoc\D9999999\C2010007\Y3\(T)ㅌㅌㅌㅌㅌ\도면\Cㄴㄴㄴ_도로\000ㅋㅋㅋㅋ\01ㅋㅋㅋㅋ계획도\01ㅋㅋㅋㅋ계획평면도
encodeStr:ㅁㅁㅁㅁㅁㅁㅁㅁㅁㅁ9jXEQ5OTk5OTk5XEMyMDEwMDA3XFkzXChUKeuMgOyghC3sspzslYjqsIQg64+E66Gc6rG07ISk6rO17IKsXOuPhOuptFxD7Yag66qpX+uPhOuhnFwwMDDsl7DqsrDsooXtlalcMDHsl7DqsrDsooXtlanqs4Ttmo3rj4RcMDHsl7DqsrDsooXtlanqs4Ttmo3tj4nrqbTrj4Q=
dncodeStr:C:\ㅇㅇㅇㅇㅇ\D9999999\C2010007\Y3\(T)ㅌㅌㅌㅌㅌ\도면\Cㄴㄴㄴ_도로\000ㅋㅋㅋㅋ\01ㅋㅋㅋㅋ계획도\01ㅋㅋㅋㅋ계획평면도

 

>>참고<<

https://veneas.tistory.com/entry/JAVA-Base64-인코딩-디코딩-3가지-방법

 

[JAVA] Base64 인코딩, 디코딩 3가지 방법

목차 1. Base64 들어가기 전에 1.1. 인코딩이란? - 인코딩(encoding)은 파일에 저장된 정보의 형태나 형식을 데이터 표준화, 보안, 처리 속도 향상, 저장 공간 절약 등을 위해서 다른 형태로 변환하는 처

veneas.tistory.com