Hash 使用MAD从字符串中提取哈希函数

Hash 使用MAD从字符串中提取哈希函数,hash,Hash,MAD(乘加除)方法对某些值x, h(x)=((ax+b)mod p)mod N 其中,p是大于N的素数,a和b是[1,p-1]范围内的一些随机整数,N是哈希表的大小 如何计算字符串值的哈希值? 我不确定是否应该计算字符串的散列(例如基于位置值),然后使用MAD方法,或者是否有其他方法 我试过什么? 我想实现一个函数inthash(str),它将返回散列值。 我已经编写了inthash(intx,intn),但在这里,我将根据字符串中字符的ASCII值发送一个预先计算的x。我可以想出两种明智的方

MAD(乘加除)方法对某些值
x

h(x)=((ax+b)mod p)mod N

其中,
p
是大于
N
的素数,
a
b
是[1,p-1]范围内的一些随机整数,
N
是哈希表的大小

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

我试过什么? 我想实现一个函数
inthash(str)
,它将返回散列值。
我已经编写了
inthash(intx,intn)
,但在这里,我将根据字符串中字符的ASCII值发送一个预先计算的
x

我可以想出两种明智的方法来实现这一点

  • 将每个字符视为它自己的数字(许多编程语言都有
    ord
    函数),并将
    h
    的求值链接起来,例如,您使用
    a
    b
    的值作为
    h
    的上一个结果

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

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