소개
이 랩에서는 java.util.Base64 클래스와 Apache Commons 라이브러리를 사용하여 Java 에서 Base64 데이터를 인코딩하고 디코딩하는 방법을 배웁니다.
이 랩에서는 java.util.Base64 클래스와 Apache Commons 라이브러리를 사용하여 Java 에서 Base64 데이터를 인코딩하고 디코딩하는 방법을 배웁니다.
이 단계에서는 새로운 Java 파일을 생성합니다. 터미널을 열고 다음 명령을 실행하여 새로운 Java 파일을 생성합니다.
touch ~/project/Base64Encoding.java
이 명령은 ~/project 디렉토리 내에 Base64Encoding.java라는 새 파일을 생성합니다. 원하는 이름을 사용할 수 있지만, .java로 끝나도록 해야 합니다.
이 단계에서는 기본 인코딩 및 디코딩에 대해 배웁니다.
getEncoder() 메서드를 사용합니다.encodeToString() 메서드를 사용하여 문자열을 인코딩합니다.인코딩된 문자열을 디코딩하기 위해 getDecoder() 메서드에서 반환된 Base64.Decoder를 사용합니다.
decode() 메서드를 사용합니다.문자열을 인코딩하고 디코딩하려면 아래 코드 블록을 사용하십시오.
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Hello World";
byte[] bytesToEncode = strToEncode.getBytes(); // convert the string to a byte array
// Encoding
String encodedStr = Base64.getEncoder().encodeToString(bytesToEncode);
System.out.println("Encoded String: " + encodedStr);
// Decoding
byte[] decodedByteArr = Base64.getDecoder().decode(encodedStr);
String decodedStr = new String(decodedByteArr);
System.out.println("Decoded String: " + decodedStr);
}
}
코드를 컴파일하고 실행하려면 터미널에서 다음 명령을 실행하십시오.
javac Base64Encoding.java && java Base64Encoding
이전 단계에서 인코딩이 인코딩된 문자열의 끝에 패딩 문자 ( = ) 를 추가하는 것을 보았습니다. 이 단계에서는 패딩 문자 없이 인코딩하는 방법을 배웁니다.
패딩 없이 문자열을 인코딩하려면 다음 코드 블록을 사용하십시오.
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String strToEncode = "Java";
byte[] bytesToEncode = strToEncode.getBytes(); // convert the string to a byte array
// Encoding without padding
String encodedStr = Base64.getEncoder().withoutPadding().encodeToString(bytesToEncode);
System.out.println("Encoded String: " + encodedStr);
}
}
코드를 컴파일하고 실행하려면 터미널에서 다음 명령을 실행하십시오.
javac Base64Encoding.java && java Base64Encoding
이 단계에서는 URL 및 파일 이름 안전한 인코딩 및 디코딩에 대해 배웁니다.
Base64 클래스는 URL 및 파일 이름 안전한 Base64 Alphabet을 사용하여 URL 인코딩 및 디코딩을 처리합니다.
getUrlEncoder() 메서드를 사용합니다.encodeToString() 메서드를 사용합니다.마찬가지로, URL 디코더를 반환하는 getUrlDecoder() 메서드가 있습니다.
decode() 메서드를 사용할 수 있습니다.URL 을 인코딩하고 디코딩하려면 아래 코드 블록을 사용하십시오.
import java.util.Base64;
public class Base64Encoding {
public static void main(String[] args) {
String urlToEncode = "https://go.java/?intcmp=gojava-banner-java-com";
// Encoding
String encodedUrl = Base64.getUrlEncoder().encodeToString(urlToEncode.getBytes());
System.out.println("Encoded URL: " + encodedUrl);
// Decoding
byte[] decodedUrlBytes = Base64.getUrlDecoder().decode(encodedUrl);
String decodedUrl = new String(decodedUrlBytes);
System.out.print("Decoded URL: " + decodedUrl);
}
}
코드를 컴파일하고 실행하려면 터미널에서 다음 명령을 실행하십시오.
javac Base64Encoding.java && java Base64Encoding
이 단계에서는 MIME 인코딩 및 디코딩에 대해 배웁니다.
인코딩을 위해 getMimeEncoder() 및 encodeToString() 메서드를 사용할 수 있습니다.
디코딩하려면 getMimeDecoder() 메서드를 사용하여 디코더를 얻은 다음 decode() 메서드를 사용합니다.
MIME 데이터를 인코딩하고 디코딩하려면 다음 코드 블록을 사용하십시오.
import java.util.Base64;
import java.util.UUID;
public class Base64Encoding {
public static void main(String[] args) {
// Creating a MIME input for encoding
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10; ++i) {
sb.append(UUID.randomUUID().toString());
}
// Encoding
byte[] bytes = sb.toString().getBytes();
String mimeEncodedStr = Base64.getMimeEncoder().encodeToString(bytes);
System.out.println("Encoded String: " + mimeEncodedStr);
// Decoding
byte[] mimeDecodedBytes = Base64.getMimeDecoder().decode(mimeEncodedStr);
String mimeDecodedStr = new String(mimeDecodedBytes);
}
}
코드를 컴파일하고 실행하려면 터미널에서 다음 명령을 실행하십시오.
javac Base64Encoding.java && java Base64Encoding
이 단계에서는 Base64 데이터를 인코딩하고 디코딩하기 위해 Apache Commons 라이브러리를 사용하는 방법을 배웁니다.
Apache Commons 라이브러리는 org.apache.commons.codec.binary 패키지 내에 Base64 클래스를 제공합니다.
encode() 및 decode() 메서드를 사용하여 인코딩 및 디코딩을 수행할 수 있습니다.Apache Commons Base64 클래스를 사용하여 문자열을 인코딩하고 디코딩하려면 다음 코드 블록을 사용하십시오.
import org.apache.commons.codec.binary.Base64;
public class Base64Encoding {
public static void main(String[] args) {
Base64 base64 = new Base64();
// Encoding
String strToEncode = "Hello World";
byte[] encodedBytes = base64.encode(strToEncode.getBytes());
String encodedStr = new String(encodedBytes);
System.out.println("Encoded String: " + encodedStr);
// Decoding
byte[] decodedByteArr = base64.decode(encodedStr.getBytes());
String decodedStr = new String(decodedByteArr);
System.out.println("Decoded String: " + decodedStr);
// Directly access the API by using the static methods encodeBase64() and decodeBase64()
String strToEncode2 = "Hello World";
String encodedStr2 = new String(Base64.encodeBase64(strToEncode.getBytes()));
String decodedStr2 = new String(Base64.decodeBase64(encodedStr.getBytes()));
}
}
코드를 컴파일하고 실행하려면 터미널에서 다음 명령을 실행하십시오.
javac -cp commons-codec-1.15.jar Base64Encoding.java && java -cp commons-codec-1.15.jar:. Base64Encoding
참고: 이 코드를 실행하려면 Apache Commons Codec 라이브러리의 .jar 파일을 다운로드하여 클래스 경로에 가져와야 합니다. 위의 명령에서 라이브러리의 클래스 경로를 지정하기 위해 -cp commons-codec-1.15.jar를 추가했습니다.
이 랩에서는 java.util.Base64 클래스와 Apache Commons 라이브러리를 사용하여 Java 에서 Base64 데이터를 인코딩하고 디코딩하는 방법을 배웠습니다. 기본 (Basic), URL, 파일 이름 안전 (Filename safe) 및 MIME 의 세 가지 다른 Base64 인코딩 및 디코딩 스키마를 다루었습니다.