我整理了一个 PHP 函数,如下所示:
function keyword_hash($keyword) {
return base_convert(substr(md5($keyword), -16), 16, 10);
}
此函数的目的是生成可以存储在数据库中的数字哈希值,并将其用于查找(而不是尝试索引关键字列)。
MySQL中这个函数的等价物如下:
SELECT CONV(RIGHT(MD5('some keyword'), 16), 16, 10);
我已经验证了 MD5 字符串是相同的,并且 substr() 与我在 MySQL 查询中从 RIGHT() 返回的值匹配。但是,当我运行 CONV() 时,我得到的值与从 base_convert() 生成的值不同。
例如,使用keyword_hash("some keyword")
生成值 10923672322315740844。但是,使用SELECT CONV(RIGHT(MD5('some keyword'), 16), 16, 10)
生成 10923672322315740475,这表明最后三个数字不同。
我在这里想念什么?他们不应该产生相同的价值吗?