Post

Base64 Radix64

Base64 is a group of similar binary-to-text encoding .

The Base64 index table:
ValueChar ValueChar ValueChar ValueChar
0A16Q32g48w
1B17R33h49x
2C18S34i50y
3D19T35j51z
4E20U36k520
5F21V37l531
6G22W38m542
7H23X39n553
8I24Y40o564
9J25Z41p575
10K26a42q586
11L27b43r597
12M28c44s608
13N29d45t619
14O30e46u62+
15P31f47v63/

Encoding example. 3 char( Byte ) 씩 끊어서 읽고 4 char로 encoding(3Byte -> 4Byte) 한다.

Text contentMan
ASCII77 (0x4d)97 (0x61)110 (0x6e)
Bit pattern010011010110000101101110
Index1922546
Base64-encodedTWFu

만약 3 Byte 중 1 byte가 없을 경우,

Text contentMa 
ASCII77 (0x4d)97 (0x61)0 (0x00)
Bit pattern010011010110000100000000
Index192240
Base64-encodedTWE=

만약 3 Byte 중 2 byte가 없을 경우,

Text contentM  
ASCII77 (0x4d)0 (0x00)0 (0x00)
Bit pattern010011010000000000000000
Index191600
Base64-encodedTQ==

  1. 맨 끝에 ‘=’나 ‘==’가 들어가는 것 이외에도, 그 앞의 char가 바뀐다.
  2. 앞에서부터 3Byte 씩 encoding 하기 때문에, 문자열의 위치에 따라 output이 변경될 수 있다.

Base64 Url Safe

1
2
Base64Utils.encodeToString(it)
Base64Utils.encodeToUrlSafeString(it)

두 개 스펙이 다른데, 기본 Base64는 변환 결과에 + /가 포함 될 수 있다. url에 넘길 때는 이 문자들이 포함되면 문제가 발생 할 수 있기 때문에, +-/_로 변경한 포맷이 Base64 Url Safe이다.

결과 문자열에 +/가 포함되어 있으면 그냥 Base64라고 보면 되고 -, _가 포함되어 있으면 Base64 Url Safe라고 보면 된다.

Radix-64

Radix-64 encoding, also known as “ASCII Armor”. Radix-64 is identical to the “Base64” encoding described from MIME, with the addition of an optional 24-bit CRC. The checksum is calculated on the input data before encoding; the checksum is then encoded with the same Base64 algorithm and, using an additional “=” symbol as separator, appended to the encoded output data.

즉 Base64 포맷에 맨 끝쪽에 = 이후 24-bit CRC 있으면. Radix-64

This post is licensed under CC BY 4.0 by the author.