Base64 Radix64
Base64 is a group of similar binary-to-text encoding.
The Base64 index table:
Value | Char | Value | Char | Value | Char | Value | Char | |||
---|---|---|---|---|---|---|---|---|---|---|
0 | A |
16 | Q |
32 | g |
48 | w |
|||
1 | B |
17 | R |
33 | h |
49 | x |
|||
2 | C |
18 | S |
34 | i |
50 | y |
|||
3 | D |
19 | T |
35 | j |
51 | z |
|||
4 | E |
20 | U |
36 | k |
52 | 0 |
|||
5 | F |
21 | V |
37 | l |
53 | 1 |
|||
6 | G |
22 | W |
38 | m |
54 | 2 |
|||
7 | H |
23 | X |
39 | n |
55 | 3 |
|||
8 | I |
24 | Y |
40 | o |
56 | 4 |
|||
9 | J |
25 | Z |
41 | p |
57 | 5 |
|||
10 | K |
26 | a |
42 | q |
58 | 6 |
|||
11 | L |
27 | b |
43 | r |
59 | 7 |
|||
12 | M |
28 | c |
44 | s |
60 | 8 |
|||
13 | N |
29 | d |
45 | t |
61 | 9 |
|||
14 | O |
30 | e |
46 | u |
62 | + |
|||
15 | P |
31 | f |
47 | v |
63 | / |
Encoding example. 3 char( Byte ) 씩 끊어서 읽고 4 char로 encoding(3Byte -> 4Byte)한다.
Text content | M | a | n | |||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ASCII | 77 (0x4d) | 97 (0x61) | 110 (0x6e) | |||||||||||||||||||||
Bit pattern | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 1 | 1 | 0 | 1 | 1 | 1 | 0 |
Index | 19 | 22 | 5 | 46 | ||||||||||||||||||||
Base64-encoded | T | W | F | u |
만약 3 Byte 중 1 byte가 없을 경우,
Text content | M | a | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ASCII | 77 (0x4d) | 97 (0x61) | 0 (0x00) | |||||||||||||||||||||
Bit pattern | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 1 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Index | 19 | 22 | 4 | 0 | ||||||||||||||||||||
Base64-encoded | T | W | E | = |
만약 3 Byte 중 2 byte가 없을 경우,
Text content | M | |||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ASCII | 77 (0x4d) | 0 (0x00) | 0 (0x00) | |||||||||||||||||||||
Bit pattern | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Index | 19 | 16 | 0 | 0 | ||||||||||||||||||||
Base64-encoded | T | Q | = | = |
1. 맨 끝에 '='나 '=='가 들어가는 것 이외에도, 그 앞의 char가 바뀐다.
2. 앞에서부터 3Byte 씩 encoding 하기 때문에, 문자열의 위치에 따라 output이 변경될 수 있다.
Base64 Url Safe
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
'Security > Crypto-PKCS' 카테고리의 다른 글
John the ripper (0) | 2016.12.25 |
---|---|
Block cipher mode of operation (0) | 2016.11.25 |
동기식, 비동기식 stream cipher (1) | 2016.11.18 |
PKCS ( Public Key Cryptography Standards ) (0) | 2016.09.14 |
Birthday Problem & Attack (0) | 2016.09.10 |