gpt4 book ai didi

php - 将散列值(md5、sha1 等)转换为固定范围内的整数

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:02:28 24 4
gpt4 key购买 nike

假设我有一个哈希函数 md5,我对一些字符串进行哈希处理,它为我提供了一些值,我需要将其转换为具有固定范围的整数值。

此处为 crc32() algorithm to convert md5 (or maybe another hashing method?) to integer where it is possible to set possible resulting integer ranges (eg: 1-10000)?

例如让我们说:

$value=md5("dog");
echo $value;

Output: "06d80eb0c50b49a509b49f2424e8c805"`

现在我需要将这个值转换为整数,以便我可以在大小为 1000 的查找表中使用它。因此,当我转换它时,这个哈希值的大小应该在 0 到 999 之间。我该怎么做那?

最佳答案

您可以使用 base_convert 将 md5 的十六进制输出更改为十进制,然后使用 bcmod 函数将其转换为您选择范围内的数字:

<?php
$valuetohash = "dog";
$range = 1000;
$hashslot = bcmod(base_convert(md5($valuetohash), 16, 10), $range);
echo $hashslot;

输出:26

将“dog”更改为“parrot”产生 800,将其更改为“cat”产生 260(有趣的是,这表明猫比狗好 10 倍)。

请注意,如果您使用的是不映射到“大十六进制数”的不同散列,例如 crc32 映射到整数,则您需要以不同的方式执行上述操作(对于 crc32,您可以只例如,根据对您问题的原始评论,将其直接 %mod 到范围内)。

关于php - 将散列值(md5、sha1 等)转换为固定范围内的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32285277/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com