Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

555
Views
¿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 4 years ago · Hanz Gallego
4 answers
Answer question

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 4 years ago · Hanz Gallego Report

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 4 years ago · Hanz Gallego Report

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 4 years ago · Hanz Gallego Report

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 4 years ago · Hanz Gallego Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!