我使用的+号加起来2 MD5哈希像这样:PHP加起来MD5散列?
md5('string1') + md5('string2')
现在
,如果我这样做用绳子,就像这样:
'string1' + 'string2'
... PHPP会给我0作为返回值。但是,对于MD5散列,它总是返回一个数字值,对此我无法确定任何来源。
我使用的+号加起来2 MD5哈希像这样:PHP加起来MD5散列?
md5('string1') + md5('string2')
现在
,如果我这样做用绳子,就像这样:
'string1' + 'string2'
... PHPP会给我0作为返回值。但是,对于MD5散列,它总是返回一个数字值,对此我无法确定任何来源。
它将取决于您的字符串生成的哈希值。当添加“字符串”值时,PHP的行为(并且它是well documented)是取任何前导数字字符并将它们视为整数...如果没有前导数字,则将其视为0.
所以
"1st String" + "2nd String" => 1 + 2 => 3
与您的数据
md5('string1') = '34b577be20fbc15477aadb9a08101ff9'
md5('string2') = '91c0c59c8f6fc9aa2dc99a89f2fd0ab5'
给
34 + 91 => 125
现在你为什么要尝试添加散列值?
PHP
+
是数字加法,.
是字符串连接。
此外,md5(string)
回报串 ...
所以:
$hashes = md5('string1') . md5('string2');
编辑:不明白为什么会downvote这个buuut,你可能想numericaly添加散列。然后,您需要将md5结果转换为数字hexdec()
不能像+
那样添加任何其他种类的字符串,但不能使用+
添加md5哈希。由于PHP的rules for string to number conversion,预计会有所不同。进行对比:
'1string' + '2string'
与
'string1' + 'string2'
如果数字增加md5s为您提供了从零不同的结果,这是因为偶然特定的哈希你与一个或多个十进制数字将开始。
可能没有合理的理由添加两个不代表十进制数字的字符串,所以不要这样做。
只需添加,md5函数返回字符串值,但md5算法会生成十六进制值。
还记得PHP支持一些自动投射。
这就是为什么php会给出一些值,但你无法检测到该值,因为即使字符串中的单个字符改变完全改变生成的MD5哈希。
仍然问题是非常有趣的。你可以让我们知道你想通过添加MD5散列实现什么?
+1信息,不知道md5创建hexa ...关于我们为什么这么做 - 这基本上是我们用+代替的一种错误。然后发现我们得到了更奇怪的结果:-) – 2012-03-28 08:54:45
不是我的downvote,但'hexdec'显然不会在这里工作,因为MD5是128位,这意味着它会转换为浮点数,这意味着你会失去精度,这意味着结果不会是准确。 – Jon 2012-03-28 08:05:03
如果我正确解释OP的问题,他不会问如何连接两个MD5哈希值。他问为什么'+'操作符在与字符串一起使用时通常返回零,为此返回一个非零整数。 – JJJ 2012-03-28 08:08:00