• Empleos
  • Sobre nosotros
  • profesionales
    • Inicio
    • Empleos
    • Cursos y retos
  • empresas
    • Inicio
    • Publicar vacante
    • Nuestro proceso
    • Precios
    • Evaluaciones
    • Nómina
    • Blog
    • Comercial
    • Calculadora de salario

0

414
Vistas
¿Cómo generar un hash MD5 en Kotlin?

¿Generar hash MD5 de una cadena usando la biblioteca estándar en Kotlin?

He intentado a continuación mencionar el código

 import java.math.BigInteger import java.security.MessageDigest fun md5(input:String): String { val md = MessageDigest.getInstance("MD5") return BigInteger(1, md.digest(input.toByteArray())).toString(16).padStart(32, '0') }

¿Es esta la mejor manera o cuál?

over 3 years ago · Hanz Gallego
4 Respuestas
Responde la pregunta

0

Usar java.security.MessageDigest es la forma más sencilla

 import java.math.BigInteger import java.security.MessageDigest fun md5(input:String): String { val md = MessageDigest.getInstance("MD5") return BigInteger(1, md.digest(input.toByteArray())).toString(16).padStart(32, '0') }
over 3 years ago · Hanz Gallego Denunciar

0

import java.math.BigInteger import java.security.MessageDigest fun main(args: Array<String>) { println(md5Hash("Hello, world!")) } fun md5Hash(str: String): String { val md = MessageDigest.getInstance("MD5") val bigInt = BigInteger(1, md.digest(str.toByteArray(Charsets.UTF_8))) return String.format("%032x", bigInt) }
over 3 years ago · Hanz Gallego Denunciar

0

En general, las funciones hash (resumen) toman una matriz de bytes como entrada y producen una matriz de bytes como salida. Por lo tanto, para codificar una cadena, primero debe convertirla en una matriz de bytes. Una forma común de hacer esto es codificar la cadena como una matriz de bytes UTF-8 : string.toByteArray(UTF_8)

Una forma común de mostrar una matriz de bytes como una cadena es convertir los bytes individuales a sus valores hexadecimales y concatenarlos. Aquí hay una función de extensión que hace eso:

 fun ByteArray.toHex() = joinToString(separator = "") { byte -> "%02x".format(byte) }

MD5 produce una matriz de bytes de longitud 16. Cuando se convierte a hexadecimal, se representa mediante una cadena de longitud 32.

El código completo se ve así:

 import java.security.MessageDigest import kotlin.text.Charsets.UTF_8 fun md5(str: String): ByteArray = MessageDigest.getInstance("MD5").digest(str.toByteArray(UTF_8)) fun ByteArray.toHex() = joinToString(separator = "") { byte -> "%02x".format(byte) } fun main() { println(md5("Hello, world!").toHex()) //6cd3556deb0da54bca060b4c39479839 println(md5("").toHex()) //d41d8cd98f00b204e9800998ecf8427e }

Tenga en cuenta que MD5 tiene debilidades bien conocidas que lo hacen inapropiado para muchos casos de uso. Las alternativas incluyen la familia SHA de funciones hash. Así es como se aplica SHA-256 en una cadena:

 fun sha256(str: String): ByteArray = MessageDigest.getInstance("SHA-256").digest(str.toByteArray(UTF_8))
over 3 years ago · Hanz Gallego Denunciar

0

Sugeriría utilizar la versión 1.15 del códec Apache commons

 <dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.15</version> </dependency>
 import org.apache.commons.codec.digest.DigestUtils fun main(args: Array<String>) { println(DigestUtils.md5Hex("Hello world!")) }
over 3 years ago · Hanz Gallego Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Nuestro proceso Comercial
Legal
Términos y condiciones Política de privacidad
© 2025 PeakU Inc. All Rights Reserved.

Andres GPT

Recomiéndame algunas ofertas
Necesito ayuda