php - 为 md5 哈希分配一个数字(1 到 9 之间)

标签 php md5

有一个像这样的 md5 散列:

md5("test") = "098f6bcd4621d373cade4e832627b4f6"

如何编写一个函数,使其在每次向其传递 md5 哈希值时返回 1 到 9 之间的数字?数字必须始终相同,即 myfunc("098f6bcd4621d373cade4e832627b4f6") 应始终返回相同的数字。 谢谢你的帮助。

最佳答案

这太过分了,返回最左边数字的建议是最好的...

function myfunc($md5) {
    $total = 0;
    foreach (str_split($md5) as $char) $total += ord($char);
    return $total % 9 + 1;
}

echo myfunc("098f6bcd4621d373cade4e832627b4f6");

这样您就可以通过修改返回语句轻松更改您感兴趣的返回值范围。

或者,更紧凑的版本:

function myfunc2($md5) {
    return array_sum(array_map("ord", str_split($md5))) % 9 + 1;
}

您甚至可以将最小值和最大值作为参数传递:

function myfunc2($md5, $min = 1, $max = 9) {
    return array_sum(array_map("ord", str_split($md5))) % $max + $min;
}

myfunc2("098f6bcd4621d373cade4e832627b4f6", 10, 20);

关于php - 为 md5 哈希分配一个数字(1 到 9 之间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3988230/

相关文章:

php - 如果字节表示小于 0x10,则从 md5() PHP 中删除 0

java - 这是使用 md5 哈希比较两个 java 对象值的可行方法吗?

php - $_SERVER ['REMOTE_ADDR' ] 未返回 IP 地址

php - 当 MySQL/PHP 中只有一条记录时打印

php - 从 PHP 调用 Jquery AJAX 后强制重定向

c++ - Openssh 程序化 MD5 哈希摘要与 shell 命令输出不匹配

使用文件进行 MD5 的 Java 测试

mysql - 如何加密 jos_users (Joomla) 中的密码列

php - 如何将 MySQL 中不可读的 utf8 字符转换为可读

PHP:如何缩短网址+从数据库中获取数据