Essential Base64 Commands For Developers

Essential Base64 Commands For Developers

This post provides a quick reference to the base64 commands that I use on macOS. The base64 command encodes and decodes Base64 data, as specified in RFC 4648.

This post provides a quick reference to the base64 commands that I use on macOS. This is not a complete set of base64 commands with detailed explanations on what each command does. If you want to read detailed documentation on the different options and arguments of the base64 command, please refer to the man pages of the base64 command.

The base64 command encodes and decodes Base64 data, as specified in RFC 4648. With no options, the base64 commands reads raw data from stdin and writes encoded data as a continuous block to stdout.

What is Base64?

The Base 64 encoding is designed to represent arbitrary sequences of octets in a form that allows the use of both upper- and lowercase letters but that need not be human readable. A 65-character subset of US-ASCII is used, enabling 6 bits to be represented per printable character. (The extra 65th character, “=”, is used to signify a special processing function.) ~ RFC4648

How does Base64 Work?

The encoding process represents 24-bit groups of input bits as output strings of 4 encoded characters. Proceeding from left to right, a 24-bit input group is formed by concatenating 3 8-bit input groups. These 24 bits are then treated as 4 concatenated 6-bit groups, each of which is translated into a single character in the base 64 alphabet. Each 6-bit group is used as an index into an array of 64 printable characters. The character referenced by the index is placed in the output string. ~ RFC4648



Index Table

The Base64 index table looks as follows:

IndexBinaryCharIndexBinaryCharIndexBinaryCharIndexBinaryChar
0000000A16010000Q32100000g48110000w
1000001B17010001R33100001h49110001x
2000010C18010010S34100010i50110010y
3000011D19010011T35100011j51110011z
4000100E20010100U36100100k521101000
5000101F21010101V37100101l531101011
6000110G22010110W38100110m541101102
7000111H23010111X39100111n551101113
8001000I24011000Y40101000o561110004
9001001J25011001Z41101001p571110015
10001010K26011010a42101010q581110106
11001011L27011011b43101011r591110117
12001100M28011100c44101100s601111008
13001101N29011101d45101101t611111019
14001110O30011110e46101110u62111110+
15001111P31011111f47101111v63111111/
Padding=


Command Examples


1. Help and Information Commands

To find help or learn more about the different options and arguements used as part of the base64 command, you can type the following in the terminal console.

Command:

# Display quick help information about the base64 command
$ base64 --help

2. Encode Raw Message (STDIN)

The base64 commands reads raw data from stdin and writes encoded data as a continuous block to stdout.

Command:

# Read raw data from stdin and write encoded data to stdout
$ echo 'Hello World' | base64

3. Decode Encoded Message (STDIN)

The base64 commands reads encoded data from stdin and writes decoded data as a continuous block to stdout.

Command:

# Read raw data from stdin and write encoded data to stdout
$ echo 'SGVsbG8gV29ybGQK' | base64 --decode

4. Encode Raw Message (Files)

The base64 commands reads raw data from an input file and writes encoded data as a continuous block to an output file.

Command:

# Read raw data from input file and write encoded data to output file.
$ base64 -i raw_message.txt -o encoded_message.txt

5. Decode Encoded Message (Files)

The base64 commands reads encoded data from an input file and writes decoded data as a continuous block to an output file.

Command:

# Read encoded data from input file and write decoded data to output file.
$ base64 -d -i encoded_message.txt -o decoded_message.txt

Summary

The base64 commands listed in this article is by no means a complete set of base64 command and only serve as a quick reference to be used by developers. To see the full documentation of the base64 command, please read the man pages of the base64 command.

Follow me on any of the different social media platforms and feel free to leave comments.