将PHP哈希表单字符串转换为整数

15

PHP是否有内置的字符串转整数哈希函数,该函数难以反向破解?

现在,我知道我可能可以使用md5,并将其子串作为基数16数字处理,但我正在寻找内置的功能。

谢谢。

3个回答

36

我认为最好的选择是使用标准哈希[md5()sha1()]来获取您字符串的哈希值,然后将其转化为整数哈希,使用base_convert($hash, 16, 10),这样就可以将您的哈希值转换为整数哈希。

希望我正确理解了您的问题。


1
你的解决方案返回一个大整数的字符串表示,而不是整数。md5的结果比PHP允许的最大整数多两倍的位数。 - Florian Metzger-Noel

3

我认为你在解决这个问题上采用了正确的方法,分两步进行。

首先,您应该使用MD5哈希来满足您的“难以反转”的要求。

其次,您可以将MD5输出作为输入传递给“将其转换为整数”的功能。

对于第二部分,您到底想要什么?它必须是一个整数吗?还是可打印字符?如果您只是想将哈希转换为某些您可以存储在数据库中、通过网络传输或其他一些原因,md5字符串无法实现的东西,则convertuuencode函数可能适合您: http://us.php.net/manual/en/function.convert-uuencode.php

另一种绕圈子的hackish方法是获取哈希的二进制值,并使用http://us.php.net/manual/en/function.bindec.php将其转换为十进制。不过,我从未尝试过这样做,并不确定它是否能像您想要的那样工作。


2

我认为你在内置内容中不会找到相关的东西,但是你使用 md5() 的想法其实很好。我无法想象为什么你需要其他的东西:它不能更快,也不能更稳定,...


md5() 不会返回一个整数,而是一个字符串。如何将其哈希为整数是问题所在。 - Florian Metzger-Noel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接