问题标签 [hash-function]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
14 回答
3908 浏览

vb6 - 为什么这个函数生成的哈希码不是唯一的?

我正在测试我从谷歌搜索得到的下面的 VB 函数。我打算用它来生成哈希码以进行快速字符串比较。但是,有时两个不同的字符串具有相同的哈希码。例如,这些字符串

“122Gen 1 堆大小(.NET CLR 内存 w3wp):mccsmtpteweb025.20833333333333E-02”

“122Gen 2 堆大小(.NET CLR 内存 w3wp):mccsmtpteweb015.20833333333333E-02”

具有相同的哈希码 237117279。

请告诉我: - 该功能有什么问题?- 我该如何解决?

谢谢

马丁


0 投票
4 回答
16098 浏览

c++ - 哈希函数为一对long long?

我需要将一对映射long long到 a double,但我不确定要使用什么哈希函数。每对可能由任意两个数字组成,尽管在实践中它们通常是介于0和之间的数字100(但同样,这并不能保证)。

tr1::unordered_map文档。我是这样开始的:

一般来说,我永远不确定要使用什么散列函数。什么是好的通用哈希函数?

0 投票
6 回答
3632 浏览

hash - 关于密码散列函数的要点是什么?

我正在阅读这个关于 MD5 哈希值的问题,而接受的答案让我感到困惑。据我了解,加密哈希函数的主要属性之一是不可能找到两个具有相同哈希值的不同消息(输入)。

然而,对于为什么 MD5 哈希值不可逆?因为无限数量的输入字符串会产生相同的输出。 这对我来说似乎完全矛盾。

此外,让我有些困惑的是算法是公开的,但哈希值仍然是不可逆的。这是因为哈希函数中总是存在数据丢失,因此无法判断哪些数据被丢弃了吗?

当输入数据大小小于固定输出数据大小时会发生什么(例如,散列密码“abc”)?

编辑:

好的,让我看看我是否直截了当:

  1. 从哈希中推断输入真的非常困难,因为有无限数量的输入字符串会生成相同的输出(不可逆属性)。
  2. 然而,即使是找到生成相同输出的多个输入字符串的单个实例也非常非常困难(抗碰撞特性)。
0 投票
2 回答
3668 浏览

hash - 动态完美散列和通用散列函数 - 请解释一下?

所以我正在阅读有关哈希表、哈希函数等的内容。我很感兴趣地阅读了维基百科上关于“动态完美哈希”如何涉及使用第二个哈希表作为数据结构来在特定存储桶中存储多个值的信息。

然而,我迷失的地方是如何选择通用哈希函数来执行第二个哈希表的哈希。谁能解释这个通用哈希函数是如何从存储在桶中的值确定的?我模糊地遵循维基百科的“通用哈希函数”页面中的推理和逻辑,但我很难对它有任何直觉。特别是,这些函数如何保证不发生冲突?或者至少,如果它们被处理掉并在检测到冲突时生成一个新的,我们怎么知道这可以在实际的时间内完成?

请问瓢虫书的解释?

0 投票
3 回答
1046 浏览

algorithm - 混合数字和文字标识符的最佳哈希函数

出于性能原因,我需要将一组由字符串标识的对象分组。对象可以通过数字或前缀(限定)形式的字符串来标识,其中用点分隔标识符的各个部分:

数字标识符从 1 到数百万不等。文本标识符很可能有很多以相同的名称空间前缀 (ns1:) 和相同的路径前缀 (edit.box.) 开头。

为此目的最好的散列函数是什么?如果我可以根据对象标识符统计信息以某种方式预测存储桶的大小,那就太好了。有没有一些好的文章可以根据一些统计信息构造好的散列函数?

有数百万个这样的标识符,但目的是根据散列函数将它们分成 1-2 千个组。

0 投票
2 回答
379 浏览

perl - 如何使用 perl 将 URL 映射到文件名?

在一个简单的 web 应用程序中,我需要将 URL 映射到文件名或文件路径。

这个应用程序有一个要求,它只能依赖于核心 Perl 发行版(5.6.0 和更高版本)中的模块。问题是大多数文件系统上的文件名长度限制为 255。另一个限制是单个文件夹中有大约 32k 个子目录。

我的解决方案:

它可靠吗?如何改进?

0 投票
3 回答
35816 浏览

c - 如何用 C 编写散列函数?

哈希表被认为是存储/检索数据的最快/最佳方式。

我对散列表的理解,散列如下(如有错误请指正或如有补充请补充):

  • 哈希表只不过是一个用于存储值的数组(单维或多维)。
  • 散列是在数组中查找索引/位置以插入/检索数据的过程。您获取一个数据项并将其作为键传递给哈希函数,您将获得插入/检索数据的索引/位置。

我有个问题:

用于存储/检索数据的散列函数是否不同于安全应用程序中用于验证的加密散列函数,如 MD5、HMAC、SHA-1 等...?

它们在哪些方面不同?

  • 如何用 C 编写散列函数?
  • 是否有一些标准或指导方针?
  • 我们如何确保哈希函数的输出,即索引不超出范围?

如果您能提及一些好的链接以更好地理解这些内容,那就太好了。

0 投票
3 回答
4087 浏览

algorithm - 特定数据结构的无冲突哈希函数

是否可以为具有特定属性的数据结构创建无冲突哈希函数。

  1. 数据结构是 int[][][]
  2. 它不包含重复项
  3. 定义了其中包含的整数范围。假设是0..1000,最大整数肯定不大于10000。

大问题是这个散列函数也应该非常快。有没有办法创建这样的哈希函数?也许在运行时取决于整数范围?

补充:我应该说这个散列函数的目的是快速检查特定组合是否被处理。因此,当处理数据结构中的某种数字组合时,我会计算哈希值并存储它。然后,当处理数据结构中的另一种数字组合时,我将比较哈希值。

0 投票
5 回答
28788 浏览

encryption - SSL 加密、SHA-1 和 SHA-2

我正在尝试实施SHA-2加密而不是SHA-1

为此,我知道这两种哈希算法之间的位数不同,这让我感到困惑。

如何实现这一点,我需要在哪些部分进行必要的更改?

我可以使用来自 Java、Python 和任何其他主要编程语言的任何开源库。

0 投票
4 回答
5243 浏览

c - 构造哈希表/哈希函数

我想构建一个哈希表,它在 1 到 15 个字节的字节序列(字符串)中查找键。

我想存储一个整数值,所以我想一个用于散列的数组就足够了。我很难概念化如何构造一个散列函数,以便给定键会给数组一个索引。

任何帮助将不胜感激。

哈希中的最大条目数为:4081*15 + 4081*14 + ... 4081 = 4081((15*(16))/2) = 489720。

例如:

哈希函数有哪些不错的选择,或者我将如何构建一个?

谢谢。