当前位置: 首页 > 面试题库 >

Java从哈希码重新创建字符串

山森
2023-03-14
问题内容

有什么方法可以在Java中使用字符串的哈希码,然后重新创建该字符串?

例如这样的事情:

String myNewstring = StringUtils.createFromHashCode("Hello World".hashCode());
if (!myNewstring.equals("Hello World"))
    System.out.println("Hmm, something went wrong: " + myNewstring);

我之所以这样说,是因为我必须将字符串转换为整数值,然后从该整数值重构该字符串。


问题答案:

这是不可能的。String的哈希码是有损的;许多字符串值将导致相同的哈希码。一个整数有32个位,每个位置有两个值。即使是32个字符的字符串(例如,每个字符都有很多可能性)也无法映射为32位而不会发生冲突。他们只是不合适。

如果要使用任意精度算术(例如BigInteger),则可以将每个字符作为整数并将它们全部串联在一起。Voilà。



 类似资料:
  • 问题内容: 我想获得像这样的Hashtable的JSON表示形式: 结果是: 但是,如果将JSON字符串转换回去,则不会得到HashTable,而会得到PSCustomObject。 那么,如何可靠地序列化上述Hashmap? 问题答案: $json = @{Path=”C:\temp”; Filter=”*.js”} | ConvertTo-Json

  • 问题内容: 我正在尝试为Laravel创建哈希密码。现在有人告诉我使用Laravel哈希帮助器,但我似乎找不到它,或者我的方向错误。 如何创建laravel哈希密码?在哪 编辑:我知道代码是什么,但我不知道在哪里以及如何使用它,因此它给了我哈希密码。如果得到哈希密码,则可以手动将其插入数据库 问题答案: 使用Bcrypt散列密码: 这将创建一个哈希密码。您可以在控制器中甚至在模型中使用它,例如,如

  • 我正在尝试实现一种检测重复文件的方法。我有一个MD5散列方法(让我们忽略MD5被破坏的事实)如下所示: 除了从< code>hashBytes中创建一个< code>string之外,我是否可以像这样简单地创建一个< code>Guid? 它仍然有效还是我会失去唯一性?

  • 问题内容: 当大小超过maxthreshold值时,如何在哈希表或哈希表中进行重新哈希处理? 是否所有对都已复制到新的存储桶阵列中? 编辑: 重新哈希后,同一存储桶(位于链接列表中)中的元素会发生什么情况?我的意思是说,他们在重新哈希处理后会留在同一个桶中吗? 问题答案: 问题中的最大阈值称为负载系数。 建议负载系数约为0.75。负载因子定义为(m / n),其中n是哈希表的总大小,m是在需要增加

  • 问题内容: 我有一个要哈希的字符串。在node.js中生成哈希的最简单方法是什么? 哈希用于版本控制,而非安全性。 问题答案: 看看crypto.createHash(algorithm)

  • 问题内容: 我有一个实现了hashCode()的向量类。它不是我写的,而是使用2个质数对2个向量分量进行异或运算。这里是: …因为这是来自已建立的Java库,所以我知道它可以正常工作。 然后,我有一个Boundary类,其中包含2个向量:“开始”和“结束”(代表直线的端点)。这两个向量的值是边界的特征。 在这里,我尝试为构成该边界的向量的唯一2元组(起点和终点)创建一个良好的hashCode()。