Java에서 바이트 배열을 Base64로 어떻게 변환합니까?


120

좋아, C #으로하는 방법을 알아.

다음과 같이 간단합니다.

Convert.ToBase64String(byte[])
and Convert.FromBase64String(string) to get byte[] back.

Java에서 어떻게 할 수 있습니까?

답변:


226

자바 8 이상

바이트 배열 인코딩 또는 디코딩 :

byte[] encoded = Base64.getEncoder().encode("Hello".getBytes());
println(new String(encoded));   // Outputs "SGVsbG8="

byte[] decoded = Base64.getDecoder().decode(encoded);
println(new String(decoded))    // Outputs "Hello"

또는 문자열 만 원하는 경우 :

String encoded = Base64.getEncoder().encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(Base64.getDecoder().decode(encoded.getBytes()));
println(decoded)    // Outputs "Hello"

자세한 내용은 Base64를 참조하세요 .

자바 <8

Base64는 8 미만의 Java 버전에는 번들로 제공되지 않습니다 . Apache Commons Codec 사용을 권장 합니다.

직접 바이트 배열의 경우 :

Base64 codec = new Base64();
byte[] encoded = codec.encode("Hello".getBytes());
println(new String(encoded));   // Outputs "SGVsbG8="

byte[] decoded = codec.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

또는 문자열 만 원하는 경우 :

Base64 codec = new Base64();
String encoded = codec.encodeBase64String("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(codec.decodeBase64(encoded));
println(decoded)    // Outputs "Hello"

이미 Spring 프로젝트에서 작업하고 있다면 org.springframework.util.Base64Utils더 인체 공학적인 클래스를 찾을 수 있습니다 .

직접 바이트 배열의 경우 :

byte[] encoded = Base64Utils.encode("Hello".getBytes());
println(new String(encoded))    // Outputs "SGVsbG8="

byte[] decoded = Base64Utils.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

또는 문자열 만 원하는 경우 :

String encoded = Base64Utils.encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = Base64Utils.decodeFromString(encoded);
println(new String(decoded))    // Outputs "Hello"

Android (Java <8 포함)

Java 8 이전에 Android SDK를 사용하는 경우 가장 좋은 옵션은 번들로 제공되는 android.util.Base64.

직접 바이트 배열의 경우 :

byte[] encoded = Base64.encode("Hello".getBytes());
println(new String(encoded))    // Outputs "SGVsbG8="

byte [] decoded = Base64.decode(encoded);
println(new String(decoded))    // Outputs "Hello"

또는 문자열 만 원하는 경우 :

String encoded = Base64.encodeToString("Hello".getBytes());
println(encoded);   // Outputs "SGVsbG8="

String decoded = new String(Base64.decode(encoded));
println(decoded)    // Outputs "Hello"

29

사용하다:

byte[] data = Base64.encode(base64str);

인코딩은 Base64로 변환됩니다.

해당 코드가 작동하려면 프로젝트에서 커먼즈 코덱 을 참조해야합니다 .

java8의 경우 :

import java.util.Base64

21
Base64 클래스의 인코딩 / 디코딩 메서드는 정적이므로 새 개체를 만들 필요가 없습니다. 그런 다음 : 바이트 [] data = Base64.decode (base64str); 충분합니다.
Ernesto Campohermoso 2013

15

또한 Android 친구 용 (API 레벨 8) :

import android.util.Base64

...

Base64.encodeToString(bytes, Base64.DEFAULT);

7

Java와 함께 Spring 프레임 워크를 사용하는 경우 쉬운 방법이 있습니다.

  1. 다음을 가져옵니다.

    import org.springframework.util.Base64Utils;
  2. 이렇게 변환하십시오.

    byte [] bytearr = {0,1,2,3,4};
    문자열 encodeText = Base64Utils.encodeToString (bytearr);
    

    디코딩하려면 Base64Utils 클래스의 decodeToString 메서드를 사용할 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.