Java는 암호화를 처리하기 위해 Base64 클래스를 제공합니다. 제공된 방법을 사용하여 데이터를 암호화하고 해독할 수 있습니다. 해당 메소드를 사용하려면 소스 파일에서 java.util.Base64를 가져와야 합니다.
이 클래스는 각 수준에서 정보를 암호화하기 위해 세 가지 서로 다른 인코더와 디코더를 제공합니다. 다음 수준에서 이러한 방법을 사용할 수 있습니다.
기본 인코딩 및 디코딩
인코딩 및 디코딩 작업을 위해 RFC 4648 및 RFC 2045에서 Java가 지정한 Base64 알파벳을 사용합니다. 인코더는 줄 구분 문자를 추가하지 않습니다. 디코더는 base64 알파벳 이외의 문자가 포함된 데이터를 거부합니다.
URL 및 파일 이름 인코딩 및 디코딩
인코딩 및 디코딩 작업을 위해 RFC 4648에서 Java가 지정한 Base64 알파벳을 사용합니다. 인코더는 줄 구분 문자를 추가하지 않습니다. 디코더는 base64 알파벳 이외의 문자가 포함된 데이터를 거부합니다.
몸짓 광대극
인코딩 및 디코딩 작업을 위해 RFC 2045에 지정된 Base64 알파벳을 사용합니다. 인코딩된 출력은 각각 76자 이하의 줄로 표시되어야 하며 줄 구분 기호로 캐리지 리턴 ' ' 바로 뒤에 줄 바꿈 ' '을 사용합니다. 인코딩된 출력 끝에 줄 구분 기호가 추가되지 않습니다. base64 알파벳 테이블에 없는 모든 줄 구분 기호 또는 기타 문자는 디코딩 작업에서 무시됩니다.
Base64의 중첩 클래스
수업 | 설명 |
---|---|
Base64.디코더 | 이 클래스는 RFC 4648 및 RFC 2045에 지정된 Base64 인코딩 체계를 사용하여 바이트 데이터를 디코딩하기 위한 디코더를 구현합니다. |
Base64.인코더 | 이 클래스는 RFC 4648 및 RFC 2045에 지정된 Base64 인코딩 체계를 사용하여 바이트 데이터를 인코딩하기 위한 인코더를 구현합니다. |
Base64 방법
행동 양식 | 설명 |
---|---|
공개 정적 Base64.Decoder getDecoder() | 기본 유형 base64 인코딩 체계를 사용하여 디코딩하는 Base64.Decoder를 반환합니다. |
공개 정적 Base64.Encoder getEncoder() | 기본 유형 base64 인코딩 체계를 사용하여 인코딩하는 Base64.Encoder를 반환합니다. |
공개 정적 Base64.Decoder getUrlDecoder() | URL 및 파일 이름 안전 유형 base64 인코딩 체계를 사용하여 디코딩하는 Base64.Decoder를 반환합니다. |
공개 정적 Base64.Decoder getMimeDecoder() | MIME 유형 base64 디코딩 체계를 사용하여 디코딩하는 Base64.Decoder를 반환합니다. |
공개 정적 Base64.Encoder getMimeEncoder() | MIME 유형 base64 인코딩 체계를 사용하여 인코딩하는 Base64.Encoder를 반환합니다. |
공개 정적 Base64.Encoder getMimeEncoder(int lineLength, byte[] lineSeparator) | 지정된 줄 길이와 줄 구분 기호가 있는 MIME 유형 base64 인코딩 체계를 사용하여 인코딩하는 Base64.Encoder를 반환합니다. |
공개 정적 Base64.Encoder getUrlEncoder() | URL 및 파일 이름 안전 유형 base64 인코딩 체계를 사용하여 인코딩하는 Base64.Encoder를 반환합니다. |
Base64.Decoder 메서드
행동 양식 | 설명 |
---|---|
공개 바이트[] 디코드(바이트[] src) | Base64 인코딩 체계를 사용하여 입력 바이트 배열의 모든 바이트를 디코딩하고 결과를 새로 할당된 출력 바이트 배열에 씁니다. 반환된 바이트 배열은 결과 바이트의 길이입니다. |
공개 바이트[] 디코드(문자열 src) | Base64 인코딩 체계를 사용하여 Base64로 인코딩된 문자열을 새로 할당된 바이트 배열로 디코딩합니다. |
공개 int 디코드(바이트[] src, 바이트[] dst) | Base64 인코딩 체계를 사용하여 입력 바이트 배열의 모든 바이트를 디코딩하고 결과를 오프셋 0부터 시작하여 지정된 출력 바이트 배열에 씁니다. |
공개 ByteBuffer 디코드(ByteBuffer 버퍼) | Base64 인코딩 체계를 사용하여 입력 바이트 버퍼의 모든 바이트를 디코딩하고 결과를 새로 할당된 ByteBuffer에 씁니다. |
공개 입력스트림 랩(InputStream은) | Base64로 인코딩된 바이트 스트림을 디코딩하기 위한 입력 스트림을 반환합니다. |
Base64.Encoder 메서드
행동 양식 | 설명 |
---|---|
공개 바이트[] 인코딩(바이트[] src) | Base64 인코딩 체계를 사용하여 지정된 바이트 배열의 모든 바이트를 새로 할당된 바이트 배열로 인코딩합니다. 반환된 바이트 배열은 결과 바이트의 길이입니다. |
공개 int 인코딩(바이트[] src, 바이트[] dst) | Base64 인코딩 체계를 사용하여 지정된 바이트 배열의 모든 바이트를 인코딩하고, 오프셋 0에서 시작하여 결과 바이트를 지정된 출력 바이트 배열에 씁니다. |
공개 문자열 encodeToString(byte[] src) | Base64 인코딩 체계를 사용하여 지정된 바이트 배열을 문자열로 인코딩합니다. |
공개 ByteBuffer 인코딩(ByteBuffer 버퍼) | Base64 인코딩 체계를 사용하여 지정된 바이트 버퍼의 나머지 모든 바이트를 새로 할당된 ByteBuffer로 인코딩합니다. 반환 시 소스 버퍼의 위치는 해당 제한까지 업데이트됩니다. 한도는 변경되지 않습니다. 반환된 출력 버퍼의 위치는 0이 되며 그 제한은 결과로 인코딩된 바이트 수입니다. |
공개 OutputStream 랩(OutputStream os) | Base64 인코딩 체계를 사용하여 바이트 데이터를 인코딩하기 위한 출력 스트림을 래핑합니다. |
Padding() 없는 공용 Base64.Encoder | 이 인스턴스와 동일하게 인코딩하는 인코더 인스턴스를 반환하지만 인코딩된 바이트 데이터 끝에 패딩 문자를 추가하지 않습니다. |
Java Base64 예제: 기본 인코딩 및 디코딩
import java.util.Base64; publicclass Base64BasicEncryptionExample { publicstaticvoid main(String[] args) { // Getting encoder Base64.Encoder encoder = Base64.getEncoder(); // Creating byte array bytebyteArr[] = {1,2}; // encoding byte array bytebyteArr2[] = encoder.encode(byteArr); System.out.println('Encoded byte array: '+byteArr2); bytebyteArr3[] = newbyte[5]; // Make sure it has enough size to store copied bytes intx = encoder.encode(byteArr,byteArr3); // Returns number of bytes written System.out.println('Encoded byte array written to another array: '+byteArr3); System.out.println('Number of bytes written: '+x); // Encoding string String str = encoder.encodeToString('JavaTpoint'.getBytes()); System.out.println('Encoded string: '+str); // Getting decoder Base64.Decoder decoder = Base64.getDecoder(); // Decoding string String dStr = new String(decoder.decode(str)); System.out.println('Decoded string: '+dStr); } }
산출:
Encoded byte array: [B@6bc7c054 Encoded byte array written to another array: [B@232204a1 Number of bytes written: 4 Encoded string: SmF2YVRwb2ludA== Decoded string: JavaTpoint
Java Base64 예: URL 인코딩 및 디코딩
import java.util.Base64; publicclass Base64BasicEncryptionExample { publicstaticvoid main(String[] args) { // Getting encoder Base64.Encoder encoder = Base64.getUrlEncoder(); // Encoding URL String eStr = encoder.encodeToString('http://www.javatpoint.com/java-tutorial/'.getBytes()); System.out.println('Encoded URL: '+eStr); // Getting decoder Base64.Decoder decoder = Base64.getUrlDecoder(); // Decoding URl String dStr = new String(decoder.decode(eStr)); System.out.println('Decoded URL: '+dStr); } }
산출:
Encoded URL: aHR0cDovL3d3dy5qYXZhdHBvaW50LmNvbS9qYXZhLXR1dG9yaWFsLw== Decoded URL: http://www.javatpoint.com/java-tutorial/
Java Base64 예제: MIME 인코딩 및 디코딩
package Base64Encryption; import java.util.Base64; publicclass Base64BasicEncryptionExample { publicstaticvoid main(String[] args) { // Getting MIME encoder Base64.Encoder encoder = Base64.getMimeEncoder(); String message = 'Hello, You are informed regarding your inconsistency of work'; String eStr = encoder.encodeToString(message.getBytes()); System.out.println('Encoded MIME message: '+eStr); // Getting MIME decoder Base64.Decoder decoder = Base64.getMimeDecoder(); // Decoding MIME encoded message String dStr = new String(decoder.decode(eStr)); System.out.println('Decoded message: '+dStr); } }
산출:
Encoded MIME message: SGVsbG8sIApZb3UgYXJlIGluZm9ybWVkIHJlZ2FyZGluZyB5b3VyIGluY29uc2lzdGVuY3kgb2Yg d29yaw== Decoded message: Hello, You are informed regarding your inconsistency of work