What is Base64 encoding?
In short, Base64-encoding is a way to encode 8 bit character data in a series of 6 bit characters. This was mostly used in transfering of data across 6 or 7 bit connections. The original RFC for Base64 was the Privacy-enhanced Electronic Mail (PEM) RFC 989 but now numerous variations exists, as well as RFC:s, like the RFC 1421, RFC 2045, RFC 3548, RFC 4848 and several other as well.
Since 8 bit characters consist of, well, 8 bits, Base64 encoding groups the characters into groups of three 8 bit characters, yielding 24 bits. Now, the resulting 24 bits are split into four sections of 6 bits instead. Each section of 6 bits is then translated into a new character in the range a-zA-Z0-9+/. 6 bits can contain 2^6 combinations, which is 64, thus the name Base64.
But what about the equal sign =?
The = character is a padding character added at the end of the encoding in case the input data is not dividable by 3. If the last 24 bits contain only one character, that character is encoded into two characters and the last two spots will be padded with the characters ==. If the last group contains two characters the encoding will have just one = character.
What is Base64 encoding used for now? Mail and file systems can now cope with 4 byte words containing millions of characters.
Well, it's often used when you already have binary data and you still want to store the data in a 7 bit environment. Say for example that you have an xml, unix config or java property file with settings for an application. Some of those settings may contain characters that aren't allowed in the file, like encrypted passwords, html snippets or other arbitrary data. Base64 encoded data might save you some trouble there.
When should I not use Base64 encoding?
If you would like to obfuscate the data, then Base64 will offer you a very poor security mechanism. Numerous tools are available to decode the data without the need for any key. The data is just in another format. If you need to hide your data, use encryption. The encrypted data is a good candidate to Base64-encode though, if you need to store the encrypted data in a text file.