将17个字符密钥散列为4个字节的值

时间:2011-05-14 07:52:00

标签: algorithm hash

我有一位同事正在努力解决哈希问题。

需要将17字母数字值(VIN代码)转换为4字节值(也可以是字母数字)。知道这4个字节会限制密钥的数量,你会看到这个问题的完美哈希算法吗?

2 个答案:

答案 0 :(得分:1)

快速查看Wikipedia后,我认为您可以先“压缩”密钥,换句话说,您可以分两个阶段进行哈希。

阶段1:根据标准细分各个部分的密钥,并独立进行自定义散列。

第2阶段:一起获取哈希值,并进行正常哈希。

一个天真的例子:

如果您的数据仅限于美国,则前2个字节只有27种可能,因此前2个字节可以被散列为0 - 26.(假设我们在这里得到a。)

然后假设其他字节有N种可能性,并且可以散列为0 - N-1。 (假设我们在这里得到b。)

组合结果可以是a * N + b。然后做一个正常的哈希(如果26 * N> 4个字节可以表达的话)。

答案 1 :(得分:1)

你在谈论一个Hash函数,所以f(x0)== f(x1)和x0!= x1是可以的。

良好的散列函数应该具有均匀分布的散列值。 例如,您可以添加组成17位数值的4个字节组,并仅保留剩余的4个字节,其中权重最低。