如何在Kotlin中生成16字符长度的MD5哈希值?
在Kotlin中生成16字符长度的MD5哈希字符串
16位MD5哈希并非独立算法,它本质是标准32位MD5哈希的中间16个字符。以你的测试用例为例:
32位MD5结果:
E292561C92AA8DDBE039D4808CC51159
16位目标结果:92AA8DDBE039D480
后者正好是前者从第9位到第24位的子串(对应字符串索引8到24,左闭右开)
实现代码
以下是完整的Kotlin实现,包含32位MD5生成和16位截取逻辑:
import java.security.MessageDigest import kotlin.experimental.and fun String.md532(): String { val md = MessageDigest.getInstance("MD5") val bytes = md.digest(this.toByteArray(Charsets.UTF_8)) return bytes.joinToString("") { "%02x".format(it and 0xFF.toByte()).uppercase() } } fun String.md516(): String { return this.md532().substring(8, 24) }
测试验证
调用方法测试你的示例字符串:
fun main() { val input = "1681799732000" println(input.md516()) // 输出:92AA8DDBE039D480 }
这段代码先通过md532()生成UTF-8编码的标准32位MD5哈希,再通过substring(8,24)截取中间16位,即可得到目标结果。
内容的提问来源于stack exchange,提问作者Sargius
相关产品推荐
相关产品推荐

