【问题标题】:Hash function from string using MAD使用 MAD 的字符串哈希函数
【发布时间】:2020-11-29 12:37:03
【问题描述】:

MAD (multiply-add-divide) 方法计算哈希值如下:x,
h(x) = ((ax + b) mod p) mod N
其中p 是大于N 的素数,ab 是[1, p-1] 范围内的一些随机整数,N 是哈希表的大小。

如何计算字符串值的哈希值? 我不确定是否应该计算字符串的哈希值(例如基于位置值),然后使用 MAD 方法还是有其他方法?

我尝试了什么? 我想实现一个函数int hash(str),它将返回哈希值。 我已经写了int hash(int x, int N),但这里我发送的是基于字符串中字符的ASCII 值预先计算的x

【问题讨论】:

    标签: hash


    【解决方案1】:

    我可以想到两种明智的方法来做到这一点。

    1. 将每个字符视为自己的数字(许多编程语言都有ord 函数)并链接h 的评估是这样的,例如,您使用ab 的值作为h 上一个结果的结果。

    2. 将整个字符串视为一个数字。您可以将字符串转换为字节数组,该数组可以通过某种大整数库转换为单个数字。这可以用作h 的输入,然后也必须使用相同的大整数库来实现。

    不知道这两种方法中哪一种更快。我猜这是第一个,但它们都不保证任何类似于加密哈希函数的属性。还有很多方法可以做到这一点。

    【讨论】:

      猜你喜欢
      • 2015-03-09
      • 2013-05-08
      • 2015-06-22
      相关资源
      最近更新 更多