Base64 Encoding in Kotlin

Kotlin provides built-in support for base64 encoding/decoding.

import java.util.Base64

fun main() {
    // Here's the string we'll encode/decode.
    val data = "abc123!?$*&()'-=@~"

    // Kotlin supports both standard and URL-compatible
    // base64. Here's how to encode using the standard
    // encoder.
    val sEnc = Base64.getEncoder().encodeToString(data.toByteArray())
    println(sEnc)

    // Decoding may return an error, which you can check
    // if you don't already know the input to be
    // well-formed.
    val sDec = String(Base64.getDecoder().decode(sEnc))
    println(sDec)
    println()

    // This encodes/decodes using a URL-compatible base64
    // format.
    val uEnc = Base64.getUrlEncoder().encodeToString(data.toByteArray())
    println(uEnc)
    val uDec = String(Base64.getUrlDecoder().decode(uEnc))
    println(uDec)
}

The string encodes to slightly different values with the standard and URL base64 encoders (trailing + vs -) but they both decode to the original string as desired.

$ kotlinc base64-encoding.kt -include-runtime -d base64-encoding.jar
$ java -jar base64-encoding.jar
YWJjMTIzIT8kKiYoKSctPUB+
abc123!?$*&()'-=@~

YWJjMTIzIT8kKiYoKSctPUB-
abc123!?$*&()'-=@~

In Kotlin, we use the java.util.Base64 class for base64 encoding and decoding. The getEncoder() and getDecoder() methods are used for standard base64, while getUrlEncoder() and getUrlDecoder() are used for URL-safe base64.

The encodeToString() method is used to encode a ByteArray to a base64 String, and decode() is used to decode a base64 String back to a ByteArray. We convert between String and ByteArray using toByteArray() and the String constructor that takes a ByteArray, respectively.

Note that in Kotlin, we don’t need to explicitly handle errors when decoding, as the decode() method throws an IllegalArgumentException if the input is not properly encoded.

查看推荐产品

Comments powered by Disqus