Sha256 Hashes in Kotlin

Here’s the translation of the SHA256 Hashes example from Go to Kotlin, formatted in Markdown suitable for Hugo:

Our first example demonstrates how to compute SHA256 hashes in Kotlin. SHA256 hashes are frequently used to compute short identities for binary or text blobs. For example, TLS/SSL certificates use SHA256 to compute a certificate’s signature.

import java.security.MessageDigest

fun main() {
    val s = "sha256 this string"

    // Here we start with a new hash.
    val md = MessageDigest.getInstance("SHA-256")

    // update expects bytes. If you have a string s,
    // use s.toByteArray() to convert it to bytes.
    md.update(s.toByteArray())

    // This gets the finalized hash result as a byte array.
    val bs = md.digest()

    println(s)
    println(bs.joinToString("") { "%02x".format(it) })
}

Kotlin implements several hash functions in the java.security package, which we can access through the MessageDigest class.

Running the program computes the hash and prints it in a human-readable hex format.

$ kotlinc SHA256Hashes.kt -include-runtime -d SHA256Hashes.jar
$ java -jar SHA256Hashes.jar
sha256 this string
1af1dfa857bf1d8814fe1af8983c18080019922e557f15a8a...

You can compute other hashes using a similar pattern to the one shown above. For example, to compute SHA512 hashes, you would use MessageDigest.getInstance("SHA-512").

Note that if you need cryptographically secure hashes, you should carefully research hash strength!