如何在 Java 中生成 16 个字符长的 MD5 哈希值?

问题描述 投票:0回答:2

我需要在 Kotlin 上为某些数据生成 MD5 哈希值,但为 16 个字符的字符串,而不是 32 个字符的字符串。目前我找不到办法,需要帮助。但肯定有一种方法存在,因为我找到了网站,它做得正确。

请检查以下网站作为示例:

https://www.freecodeformat.com/md516.php

https://www.freecodeformat.com/md5.php

作为控件,我使用这个字符串 - “1681799732000”。第一个站点生成包含 16 个字符的正确答案 - “92AA8DDBE039D480”,第二个链接 - 32 位字符串 - “E292561C92AA8DDBE039D4808CC51159”。

在 Kotlin 中生成 32 个字符的 MD5 不是问题,但 16 个字符 - 实际上是问题。

您能帮我解答这个问题吗?

编辑 1 - 编码大概是 UTF-8

kotlin md5
2个回答
0
投票

您无法生成 16 个字符的 MD5 哈希值,但您可以尝试使用一种技巧来获取 16 个字符的唯一字符串(如果适合您的用例)。

  1. 首先,根据给定字符串创建 MD5 哈希值。然后,从中取出前 16 个字符。
  2. 如果生成的字符串不在数据库中,则它是唯一的,然后就完成了。否则,继续步骤 3。
  3. 将预定字符串附加到原始字符串中。然后,转到步骤 1。

0
投票

如果您将控制字符串放入您返回的每个字符串中:

16:         92aa8ddbe039d480
32: e292561c92aa8ddbe039d4808cc51159

16 个字符的结果似乎是 32 个字符的结果,删除了第一个和最后 8 个字符。

© www.soinside.com 2019 - 2024. All rights reserved.