【问题标题】:Generate one hash with size 12 from String从 String 生成一个大小为 12 的哈希
【发布时间】:2016-02-02 20:18:31
【问题描述】:

是否可以从字符串中生成一个包含 12 个字符(字母和数字)的哈希?就像 md5 但只有 12 个字符?

使用 Java。

tks

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: java hash


【解决方案1】:

您可以从 Java 中的每个对象(几乎是所有对象)中提取哈希码。

因此您可以使用hashCode() 方法从String 中获取哈希。无法设置您将获得的哈希的长度,但您始终可以将哈希解析为字符串并使用子字符串截断它。

这样,你可以这样做:

//Get the hash
int hash = yourString.hashCode();
//Parse it to String
String yourHash = Integer.toString(hash);
//Truncate the hash
String truncatedHash = yourHash.substring(0, 12)

如果你希望你的哈希返回一个整数,你只需要Integer.parseInt(truncatedHash)

这不是最清晰的解决方案,但我不知道你究竟想达到什么目的。

【讨论】:

  • 很好,但我忘了告诉你,那个哈希应该是一个 ID,所以我需要保证有时不会重复。
  • @Fabio,这简直是不可能的。如果你取出所有长度为 13 的字符串,并将它们放入你选择的任何算法中,你将不得不得到一些重复,因为长度为 13 的字符串可能比长度为 12 的字符串多。
  • 如果你想要一个键或其他东西来识别你的字符串,最简单的方法就是从对象中获取哈希码,而不是将其截断为 12 个字符。
猜你喜欢
  • 2021-04-05
  • 1970-01-01
  • 2017-10-15
  • 2018-08-08
  • 1970-01-01
  • 2018-04-10
  • 1970-01-01
  • 1970-01-01
  • 2013-07-29
相关资源
最近更新 更多