Creating the Base64 Encoder with Python
In this guide I will explain what the Base64 is and what its used for. Then I will show you how to create your own Base64 program with Python.
What is Base64?
Base64 is a binary-to-text encoding scheme that is widely used for encoding binary data, such as images, audio, and binary files, into a text format. It is named “Base64” because it uses a base of 64 different characters to represent binary data. Base64 is a common method for transferring binary data over text-based protocols, such as email or XML-based web services, where binary data may not be easily transmitted.
Here’s an in-depth explanation of how Base64 encoding works:
Character Set:
Base64 uses a set of 64 different characters to represent binary data. These characters include A-Z, a-z, 0-9, and two additional characters that vary depending on the implementation. The two additional characters are often “+”, and “/”, but in some cases, they may be different, especially in URL-safe Base64, where “+” and “/” are replaced by “-” and “_” to avoid conflicts with web URLs.
Conversion to Binary:
Base64 encoding works by first converting the binary data into a series of 8-bit (1-byte) groups. If the last group has fewer than 8 bits, it is padded with zeros to make it a full 8 bits.
Dividing into 6-Bit Chunks:
Each 8-bit group is then divided into four 6-bit chunks. These 6-bit chunks can represent values from 0 to 63 (2^6), allowing them to map to the 64-character set.
Encoding with Base64 Characters:
Each 6-bit chunk is then converted into an equivalent character from the Base64 character set. For example, a 6-bit value of 10 would correspond to the character “K” in Base64. These characters are concatenated together to form the Base64-encoded string.
Padding:
If the original binary data is not evenly divisible by 3 (as each 6-bit chunk represents 3/4 of a byte), padding characters, usually “=”, are added to the end of the Base64 string to ensure the length is a multiple of 4.
Decoding:
To decode a Base64-encoded string back into binary data, the process is reversed. The Base64 characters are converted back into their 6-bit representations, which are then combined to form the original binary data.
Here’s an example of Base64 encoding:
Original binary data: “Hello, World!”
Base64-encoded string: “SGVsbG8sIFdvcmxkIQ==”
Base64-encoded string: “SGVsbG8sIFdvcmxkIQ==”
Decoded binary data: “Hello, World!”
Base64 is a practical and widely used encoding method for a variety of purposes, including:
Email attachments: Images and other binary files can be encoded in Base64 to send them via email, as email protocols typically handle only text data.
Data transmission: Binary data can be encoded in Base64 for transmission over text-based communication channels, such as HTTP and XML.
Storing binary data in text files: Base64 encoding can be used to include binary data in text files (e.g., configuration files) without risking data corruption.
Web development: Base64-encoded images and resources are often used in web development, allowing them to be embedded directly in HTML, CSS, and JavaScript files.
Creating a Base64 with Python
With the help of the base64 Python library, this is a very basic script. Input the message you wish to encrypt into the string variable and then run the script.
import base64 string="Encode This" converted = bytes(string, 'ascii') encoded_data = base64.b64encode(converted) print("Encoded text with base64 is") print(encoded_data)
You can decode the encrypted message using the following script:
import base64 decoded_data = base64.b64decode("RW5jb2RlIFRoaXM=") print("decoded text is ") print(decoded_data)
Run the script and your message will be printed to the terminal or console.
Using Linux
Just to show you how easy it is to crack base64, open a Linux terminal and enter the following command:
echo 'Hello world' | base64
And you can decode this encrypted message just as easily with the following command:
echo 'SGVsbG8gd29ybGQK' | base64 --decode
Conclusion
While Base64 encoding is useful for these purposes, it is important to note that it does not provide encryption or security; it merely transforms binary data into a text format. Therefore, sensitive data should not be considered secure when encoded with Base64.
Find more of our Python guides here: Python Guides
Recommendation:
Big Book of Small Python Programs: 81 Easy Practice Programs: https://amzn.to/3rGZjCR