将MD5转换为base62以获取URL

Mar*_*ark 8 php md5 base62

我有一个脚本转换为base 62(A-Za-z0-9)但是如何从MD5中获取一个数字?

我在很多地方读过,因为MD5中的数字大于php可以处理的整数,它将是不准确的...因为我想要一个简短的URL,并且不打算使用整个哈希,也许只有8个字符它....

所以我的问题是如何获得MD5哈希的部分数量?

仅使用部分MD5哈希是一个坏主意吗?

Ali*_*xel 7

我将在这里建议一个不同的东西..因为你只对使用md5哈希的十进制块感兴趣,为什么不使用像CRC32Adler这样的任何其他短数字哈希?这是一个例子:

$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)

希望能帮助到你.=)