【问题标题】:Is there a gentle hash function tutorial?有没有温和的哈希函数教程?
【发布时间】:2011-04-17 19:01:03
【问题描述】:

尴尬的是,选择一个散列函数(例如,用于散列字符串或整数集等)对我来说仍然很神奇:这里取一些素数,那里取一些魔法常数,做一些位移,取模,然后完成.

有没有关于创建哈希函数的漂亮、温和且平易近人的教程?

【问题讨论】:

    标签: function hash language-agnostic


    【解决方案1】:

    很好奇找到哈希算法的基本解释是多么困难。可能题目太难了,做个基础教程不容易。我自己也在找一个,遇到了同样的问题。

    但是你可以试试这个页面。很酷的地方在于,在您阅读完页面后,底部有一个文本框。如果您将文本添加到该框并提交表单,则结果是它如何散列输入文本的分步列表。

    http://www.metamorphosite.com/one-way-hash-encryption-sha1-data-software

    祝你好运。如果您发现更好的东西,如果您将其发布在此处将非常有帮助。

    【讨论】:

      【解决方案2】:

      您可以在Hash Table Tutorial 找到一个体面、简单的哈希教程(也讨论哈希函数)。请注意,如果您进行网络搜索,您可以找到很多有用的信息。

      维基百科有一些关于Hash Tables 和Hash Functions 的基本信息。

      编辑

      之前有人问过类似的问题:Which Hash Function Should I Choose。问题和答案都很棒。

      【讨论】:

      • 问题是关于哈希函数,而不是哈希表。
      • 维基百科哈希函数页面远非一个好的教程。
      【解决方案3】:

      来自link,在下面突出显示一些提供概述的部分

      什么是好的散列函数

      大多数好的散列函数通过计算除以表大小 N 后的余数来工作。

      这总是给出一个介于 0 和 N-1 之间的值,因此它是合适的,但如果 N 是质数,那么它也非常适合将数据分散在桌子周围。当然,如果你有一个想要散列的文本值,你首先必须将它转换成一个合适的数值,而像示例中的简单方案是行不通的。

      您需要为每个可能的文本值生成不同的数值,并且将前两个字母的 ASCII 代码加在一起显然是行不通的。更好的方法是通过字母的位置对每个 ASCII 代码进行加权,第一个字符乘以 1,第二个字符乘以 10,第三个字符乘以 100,依此类推……然后将它们相加得到一个值。

      一般来说,构建一个非常好的哈希函数是很困难的,在大多数情况下,您需要找到一个具有良好属性并经过良好测试的函数。

      【讨论】:

      • 发布链接是不够的。请确保您的答案在没有链接的情况下也有用,例如从链接页面引用相关部分。想象一下,如果该链接在未来发生故障会发生什么。
      • 谢谢。会记住的。已编辑答案以突出显示我认为有用的部分。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-17
      • 1970-01-01
      • 2013-09-12
      • 2021-01-19
      • 2023-03-21
      • 1970-01-01
      • 2017-11-29
      相关资源
      最近更新 更多