扫码关注官方订阅号
类似于md5,但结果只能是一个整数且n是可以改变的。
认证高级PHP讲师
大家都在说思路,我来给个crc32的实例:
$str = 'Created by PhpStorm.'; $crc32 = crc32($str); // 因为crc32求出来的是一个32位整数,可为负数,所以abs一下 // 要多少范围内,就求余多少就行 $result = abs($crc32) % 100; var_dump($result); // int(59)
我这个还不是最佳答案?
md5本身就能实现这样的功能,md5是把一组数据通过哈希算法映射为128位数字,然后再输出ASCII为字符串。只要把这个过程逆向即可把字符串转为128位数字,再映射为1-n之间的整数。但是我想这样映射之后的哈希碰撞一定会大幅度上升。不过这也不失为一种方法 。
value = md5(str) value = mask & value // mask为0b000011111,其中1的数量为m,且2^m等于n
大概可以是这个思路
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
大家都在说思路,我来给个crc32的实例:
我这个还不是最佳答案?
md5本身就能实现这样的功能,md5是把一组数据通过哈希算法映射为128位数字,然后再输出ASCII为字符串。只要把这个过程逆向即可把字符串转为128位数字,再映射为1-n之间的整数。但是我想这样映射之后的哈希碰撞一定会大幅度上升。不过这也不失为一种方法 。
大概可以是这个思路