有一个温和的哈希函数教程吗?

问题描述 投票:26回答:3

令人尴尬的是,选择哈希函数(例如,对于散列字符串或整数集等)对我来说仍然是神奇的:在这里取一些素数,在那里使用魔法常量,做一些移位,模数和完成。

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

function hash language-agnostic
3个回答
16
投票

很奇怪找到哈希算法的基本解释是多么困难。也许这个主题非常难以制作基础教程并不容易。我自己在寻找一个并遇到同样的问题。

但你可以尝试这个页面。很酷的是,在您阅读完页面后,底部有一个文本框。如果您向该框添加文本并提交表单,则结果将逐步列出其如何对输入文本进行哈希处理。

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

祝好运。如果你发现更好的东西,如果你在这里发布它会非常有用。


3
投票

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

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

编辑

之前曾问过一个类似的问题:Which Hash Function Should I Choose。问题和答案非常好。


1
投票

从这个link,在下面的一些部分突出显示概述

是什么使一个好的哈希函数

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

这总是给出介于0和N-1之间的值,因此它是合适的,但如果N是素数,那么它也很好地将数据分散在表格周围。当然,如果你有一个你想要哈希的文本值,你首先必须将它转换为合适的数值,并且像示例中的那个简单方案将不会这样做。

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

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

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