【发布时间】:2020-01-25 01:16:44
【问题描述】:
有没有简单的使用散列算法生成48位散列?我需要从唯一的输入字符串生成唯一的 MAC 地址。这里没有安全问题,只是将其映射到 MAC 地址空间(即 48 位)的问题。
我想到了 CRC32,它只有 32 位,而且很简单(cksum 在每个 Linux 上都有),并将它们用于低 32 位,但如果主机多于几台,则冲突非常高。
如果我可以获得 48 位哈希,我可以屏蔽 8 个最高有效位中的第二个最低有效位,以确保它是本地管理地址。单个位的丢失很小。
相反,我可以使用更长的散列算法(MD5、SHA1 等),只取 48 个最高有效位或最低有效位。
有没有简单的方法来做到这一点?
我的偏好是命令行实用程序,但如果我必须编写简短的 python 或类似的,没什么大不了的。
【问题讨论】:
-
@Terry 很棒!请注意,他们只将其设为 40 位,并且只占用最重要的 40 位。我不确定这与以其他方式修剪它的影响。不过谢谢!
标签: linux hash mac-address