How to Encode and Decode Base64 Strings in Kotlin

Learn how to use Kotlin's built-in Base64 library to easily encode and decode strings and binary data.
On this page

How to Encode and Decode Base64 Strings in Kotlin

Excerpt

Master Base64 data encoding/decoding in Kotlin. This guide covers importing the Base64 library, encoding/decoding strings and binary data, use cases like storing data and encryption, advantages, and more.


Introduction to Base64

Base64 is an encoding method that converts binary data into ASCII text format using 64 printable characters. It is commonly used to transmit binary data over text-based communication systems that only support ASCII.

What is Base64 Encoding?

Base64 encoding works by breaking binary data into chunks of 3 bytes (24 bits). These 24 bits are divided into 4 groups of 6 bits each. Each 6-bit group is represented by one of the 64 Base64 characters.

This allows the binary data to be converted into a Base64 encoded string that contains only ASCII characters. This Base64 string can be safely transmitted over textual networks and systems.

Why Encode Strings to Base64?

There are several advantages to encoding binary data as Base64:

  • Base64 can represent any binary data in ASCII format
  • Encoded strings are universally compatible across systems
  • Allows binary data to be transmitted over text-based networks
  • Used for obfuscating encrypted data
  • Necessary for embedding media like images in textual documents

Overview of Encoding and Decoding

  • Encoding: Binary data -> Break into 3 byte chunks -> Split into 6-bit groups -> Map to Base64 table -> Output as ASCII string

  • Decoding: ASCII string -> Break into 4 char groups -> Map from Base64 table -> Combine 6-bit groups -> Merge into 3 byte chunks -> Output original binary data

Decoding reverses the encoding process to reconstruct the original binary data from the Base64 string.

Base64 Encoding in Kotlin

Kotlin provides built-in Base64 encoding and decoding through the java.util.Base64 class. Here’s how to encode strings to Base64 in Kotlin:

Importing Kotlin’s Base64 Library

Include the Base64 class in your code:

1import java.util.Base64

This gives access to the encoding and decoding functions.

Converting String to Bytes

Convert the string to a byte array before encoding:

1val string = "Hello World"
2val stringBytes = string.toByteArray()

This converts the string into a binary byte array.

Using Base64.encodeToString()

Encode the byte array into a Base64 string:

1val encoded = Base64.encodeToString(stringBytes)

This will return the encoded Base64 string.

Encoding Examples

1val data = "IToolkit"
2val encoded = Base64.encodeToString(data.toByteArray())
3
4println(encoded) // SVRvb2xraXQ=

Any binary data like images can be encoded by first converting to bytes.

The free Base64 Encode verification tool is as follows:

Base64 Decoding in Kotlin

Kotlin can also decode Base64 strings back to binary data. Here’s how:

Using Base64.decode()

The decode() function decodes a Base64 string:

1val bytes = Base64.decode(encoded)

This converts the Base64 string into the original byte array.

Converting Bytes Back to String

Convert the decoded byte array back into a string:

1val decoded = String(bytes)

This gives you back the original string that was encoded.

Decoding Examples

1val encoded = "SVRvb2xraXQ="
2val bytes = Base64.decode(encoded)
3val decoded = String(bytes)
4
5println(decoded) // IToolkit

Any Base64 encoded data can be decoded by first getting the byte array.

The free Base64 Decode verification tool is as follows:

Use Cases for Base64 in Kotlin

Here are some common use cases for Base64 encoding and decoding in Kotlin:

Transmitting Data Over Networks

Encode binary data to Base64 in order to transmit it over text-based networks like HTTP, SMTP, etc.

Storing Data in Databases

Save binary data like images and documents in a database by first encoding to Base64 string format.

Embedding Media in Code

Directly embed images, videos, etc in textual documents like HTML by encoding them as Base64 strings.

Encryption and Securing Data

Base64 is commonly used to encode encrypted data before transmitting or storing.

Advantages of Base64

Here are some of the key advantages of using Base64 encoding:

Encodes Any Binary Data as Text

Base64 can encode any arbitrary binary data like images, executables, csv files, etc into a text format.

Wide Support Across Languages and Platforms

Base64 has support in almost every programming language and platform, making it universally usable.

Allows Transmission Over Text-based Systems

Base64 encoded data can be easily transmitted over text-only protocols like HTTP, email, etc.

Disadvantages of Base64

There are also some disadvantages to consider:

Encoded Data is 33% Larger

Base64 encoding increases the data size by about 33% compared to the original binary data.

Not Encryption, Just Encoding

Base64 provides encoding, not encryption. Sensitive data should be encrypted first.

Conclusion

  • Base64 encoding allows arbitrary binary data to be converted to and from ASCII text
  • Kotlin provides simple encoding/decoding via the Base64 class
  • Encode strings by converting to bytes and using Base64.encodeToString()
  • Decode Base64 by using Base64.decode() and converting bytes to string
  • Useful for transmitting media, storing data, and securing information
  • Understanding Base64 encoding unlocks new possibilities for processing binary data

Base64 is an essential technique developers should know. Kotlin makes it easy to integrate Base64 conversions in your applications. Refer to the Java Base64 documentation for additional utilities.