Development Tip

Java에서 Base64 문자열 디코딩

yourdevel 2020. 12. 25. 10:33
반응형

Java에서 Base64 문자열 디코딩


간단한 Base64 문자열을 디코딩하려고하는데 그렇게 할 수 없습니다. 현재 org.apache.commons.codec.binary.Base64패키지를 사용하고 있습니다.

내가 사용하는 테스트 문자열은 abcdefgPHP를 사용하여 인코딩되었습니다 YWJjZGVmZw==.

이것은 현재 사용중인 코드입니다.

Base64 decoder = new Base64();
byte[] decodedBytes = decoder.decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes) + "\n") ;   

위의 코드는 오류를 발생시키지 않지만 예상대로 디코딩 된 문자열을 출력하지 않습니다.


사용중인 패키지를 수정합니다.

import org.apache.commons.codec.binary.Base64;

그리고 다음과 같이 사용하십시오.

byte[] decoded = Base64.decodeBase64("YWJjZGVmZw==");
System.out.println(new String(decoded, "UTF-8") + "\n");

다음은 최신 버전의 Apache 공통 코덱에서 작동합니다.

byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw==");
System.out.println(new String(decodedBytes));

및 인코딩

byte[] encodedBytes = Base64.getEncoder().encode(decodedBytes);
System.out.println(new String(encodedBytes));

일반적으로 base64는 이미지에 사용됩니다. 이미지를 디코딩하려는 경우 (이 예제에서는 org.apache.commons.codec.binary.Base64 패키지가있는 jpg) :

byte[] decoded = Base64.decodeBase64(imageJpgInBase64);
FileOutputStream fos = null;
fos = new FileOutputStream("C:\\output\\image.jpg");
fos.write(decoded);
fos.close();

아파치를 사용하지 않으려면 Java8을 사용할 수 있습니다.

byte[] decodedBytes = Base64.getDecoder().decode("YWJjZGVmZw=="); 
System.out.println(new String(decodedBytes) + "\n");

참조 URL : https://stackoverflow.com/questions/11544568/decoding-a-base64-string-in-java

반응형