Hashing is an important concept, it has numerous applications, and it’s at the core of many other computer science concepts.
HashUtils.kt is a very simple, yet very helpful snippet I’ve used in some of my applications when I need some basic hashing. It’s an extension function, one of Kotlin neat features.
package com.isscroberto.onebreath.utils | |
import java.security.MessageDigest | |
enum class Algorithm(val code: String) { | |
SHA1("SHA-1"), SHA256("SHA-256"), SHA512("SHA-512") | |
} | |
fun String.hash (algorithm: Algorithm): String { | |
val hexArray = "0123456789ABCDEF" | |
val bytes = MessageDigest.getInstance(algorithm.code).digest(this.toByteArray()) | |
val hash = StringBuilder(bytes.size * 2) | |
bytes.forEach { | |
val i = it.toInt() | |
hash.append(hexArray[i shr 4 and 0x0f]) | |
hash.append(hexArray[i and 0x0f]) | |
} | |
return hash.toString() | |
} |
Usage:
val text = "hello" val hashedText = text.hash(Algorithm.SHA256)
Reference:
https://www.samclarke.com/kotlin-hash-strings/