我有一个脚本转换为base 62(A-Za-z0-9)但是如何从MD5中获取一个数字?
我在很多地方读过,因为MD5中的数字大于php可以处理的整数,它将是不准确的...因为我想要一个简短的URL,并且不打算使用整个哈希,也许只有8个字符它....
所以我的问题是如何获得MD5哈希的部分数量?
仅使用部分MD5哈希是一个坏主意吗?
我将在这里建议一个不同的东西..因为你只对使用md5哈希的十进制块感兴趣,为什么不使用像CRC32或Adler这样的任何其他短数字哈希?这是一个例子:
$hash = sprintf('%u', crc32('your string here'));
Run Code Online (Sandbox Code Playgroud)
这将生成字符串的8位哈希值.
编辑:我想我误解了你,这里有一些函数可以提供从62到62的转换.
编辑(再次):要使用任意长度的数字,您必须使用bc_math或GMP扩展,这是一个使用bc_math扩展的函数,也可以从base 2转换为base 62.你应该像这样使用它:
echo bc_base_convert(md5('your url here'), 16, 62); // public base 62 hash
Run Code Online (Sandbox Code Playgroud)
和逆:
echo bc_base_convert('base 62 encoded value here', 62, 16); // private md5 hash
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你.=)