89 lines
3.2 KiB
Markdown
89 lines
3.2 KiB
Markdown
|
---
|
||
|
obj: concept
|
||
|
wiki: https://en.wikipedia.org/wiki/Base64
|
||
|
rfc: https://datatracker.ietf.org/doc/html/rfc4648
|
||
|
---
|
||
|
|
||
|
# Base64
|
||
|
Base64 is a group of similar binary-to-text encoding schemes that represent binary data in an [ASCII](ASCII.md) string format by translating it into a radix-64 representation.
|
||
|
|
||
|
When the term "Base64" is used on its own to refer to a specific algorithm, it typically refers to the version of Base64 outlined in RFC 4648, section 4, which uses the following alphabet to represent the radix-64 digits, alongside = as a padding character:
|
||
|
```
|
||
|
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
|
||
|
```
|
||
|
|
||
|
A common variant is "Base64 URL safe", which omits the padding and replaces `+/` with `-_` to avoid characters that might cause problems in [URL](../internet/URL.md) path segments or query parameters.
|
||
|
|
||
|
Base64 encoding schemes are commonly used to encode binary data for storage or transfer over media that can only deal with [ASCII](ASCII.md) text (or some superset of [ASCII](ASCII.md) that still falls short of accepting arbitrary binary data). This ensures that the data remains intact without modification during transport. Common applications of Base64 include:
|
||
|
- [Email](../internet/eMail.md) via [MIME](MIME.md)
|
||
|
- Storing complex data in [XML](XML.md)
|
||
|
- Encoding binary data so it can be included in a [Data URL](../internet/Data%20URLs.md)
|
||
|
|
||
|
## Alphabet
|
||
|
| Index | Binary | Char |
|
||
|
| ------- | ------ | ---- |
|
||
|
| 0 | 000000 | `A` |
|
||
|
| 1 | 000001 | `B` |
|
||
|
| 2 | 000010 | `C` |
|
||
|
| 3 | 000011 | `D` |
|
||
|
| 4 | 000100 | `E` |
|
||
|
| 5 | 000101 | `F` |
|
||
|
| 6 | 000110 | `G` |
|
||
|
| 7 | 000111 | `H` |
|
||
|
| 8 | 001000 | `I` |
|
||
|
| 9 | 001001 | `J` |
|
||
|
| 10 | 001010 | `K` |
|
||
|
| 11 | 001011 | `L` |
|
||
|
| 12 | 001100 | `M` |
|
||
|
| 13 | 001101 | `N` |
|
||
|
| 14 | 001110 | `O` |
|
||
|
| 15 | 001111 | `P` |
|
||
|
| 16 | 010000 | `Q` |
|
||
|
| 17 | 010001 | `R` |
|
||
|
| 18 | 010010 | `S` |
|
||
|
| 19 | 010011 | `T` |
|
||
|
| 20 | 010100 | `U` |
|
||
|
| 21 | 010101 | `V` |
|
||
|
| 22 | 010110 | `W` |
|
||
|
| 23 | 010111 | `X` |
|
||
|
| 24 | 011000 | `Y` |
|
||
|
| 25 | 011001 | `Z` |
|
||
|
| 26 | 011010 | `a` |
|
||
|
| 27 | 011011 | `b` |
|
||
|
| 28 | 011100 | `c` |
|
||
|
| 29 | 011101 | `d` |
|
||
|
| 30 | 011110 | `e` |
|
||
|
| 31 | 011111 | `f` |
|
||
|
| 32 | 100000 | `g` |
|
||
|
| 33 | 100001 | `h` |
|
||
|
| 34 | 100010 | `i` |
|
||
|
| 35 | 100011 | `j` |
|
||
|
| 36 | 100100 | `k` |
|
||
|
| 37 | 100101 | `l` |
|
||
|
| 38 | 100110 | `m` |
|
||
|
| 39 | 100111 | `n` |
|
||
|
| 40 | 101000 | `o` |
|
||
|
| 41 | 101001 | `p` |
|
||
|
| 42 | 101010 | `q` |
|
||
|
| 43 | 101011 | `r` |
|
||
|
| 44 | 101100 | `s` |
|
||
|
| 45 | 101101 | `t` |
|
||
|
| 46 | 101110 | `u` |
|
||
|
| 47 | 101111 | `v` |
|
||
|
| 48 | 110000 | `w` |
|
||
|
| 49 | 110001 | `x` |
|
||
|
| 50 | 110010 | `y` |
|
||
|
| 51 | 110011 | `z` |
|
||
|
| 52 | 110100 | `0` |
|
||
|
| 53 | 110101 | `1` |
|
||
|
| 54 | 110110 | `2` |
|
||
|
| 55 | 110111 | `3` |
|
||
|
| 56 | 111000 | `4` |
|
||
|
| 57 | 111001 | `5` |
|
||
|
| 58 | 111010 | `6` |
|
||
|
| 59 | 111011 | `7` |
|
||
|
| 60 | 111100 | `8` |
|
||
|
| 61 | 111101 | `9` |
|
||
|
| 62 | 111110 | `+` |
|
||
|
| 63 | 111111 | `/` |
|
||
|
| Padding | - | = |
|