PHP添加MD5哈希?

PHP添加MD5哈希?,php,md5,Php,Md5,我正在使用+符号添加2个MD5哈希值,如下所示: md5('string1') + md5('string2') 现在,如果我用字符串做这个,就像这样: 'string1' + 'string2' …PHPp将给我0作为返回值。但是,对于MD5哈希,它总是返回一个数值,我无法确定其来源。它将取决于字符串生成的哈希值。当添加“字符串”值时,PHP的行为(事实上)是将任何前导数字字符视为整数。。。如果没有前导数字,则它将被视为0 所以 用你的数据 md5('string1') = '34b577

我正在使用+符号添加2个MD5哈希值,如下所示:

md5('string1') + md5('string2')
现在,如果我用字符串做这个,就像这样:

'string1' + 'string2'

…PHPp将给我0作为返回值。但是,对于MD5哈希,它总是返回一个数值,我无法确定其来源。

它将取决于字符串生成的哈希值。当添加“字符串”值时,PHP的行为(事实上)是将任何前导数字字符视为整数。。。如果没有前导数字,则它将被视为0

所以

用你的数据

md5('string1') = '34b577be20fbc15477aadb9a08101ff9'
md5('string2') = '91c0c59c8f6fc9aa2dc99a89f2fd0ab5'
给予

34 + 91 => 125

现在为什么要添加哈希值?

这将取决于字符串生成的哈希值。当添加“字符串”值时,PHP的行为(事实上)是将任何前导数字字符视为整数。。。如果没有前导数字,则它将被视为0

所以

用你的数据

md5('string1') = '34b577be20fbc15477aadb9a08101ff9'
md5('string2') = '91c0c59c8f6fc9aa2dc99a89f2fd0ab5'
给予

34 + 91 => 125

现在为什么要添加散列值?

在PHP中,
+
是数字加法,
是字符串串联

另外,
md5(string)
返回一个字符串

因此:


您可能希望在数字上添加散列。然后您需要使用将MD5结果转换为数字。

在PHP中,
+
是数字加法,
是字符串串联

另外,
md5(string)
返回一个字符串

因此:


您可能希望在数字上添加散列。然后需要使用将MD5结果转换为数字。

不能使用
+
添加MD5哈希,就像不能使用
+
添加任何其他类型的字符串一样。这种差异是意料之中的,是由于PHP的。相比之下:

'1string' + '2string'

如果以数字方式添加MD5得到的结果不同于零,这是因为您添加的特定哈希值碰巧以一个或多个十进制数字开始


添加两个不代表十进制数的字符串是没有正当理由的,所以不要这样做。

不能使用
+
添加md5哈希,就像不能使用
+
添加任何其他类型的字符串一样。这种差异是意料之中的,是由于PHP的。相比之下:

'1string' + '2string'

如果以数字方式添加MD5得到的结果不同于零,这是因为您添加的特定哈希值碰巧以一个或多个十进制数字开始


添加两个不代表十进制数的字符串是没有正当理由的,所以不要这样做。

只需添加,md5函数返回字符串值,但md5算法生成十六进制值

还记得PHP支持一些自动转换

这就是为什么php会给出一些值,但您无法检测到该值,因为即使字符串中的单个字符更改也会完全更改生成的MD5哈希


这个问题仍然很有趣。您能告诉我们您通过添加md5散列试图实现什么吗?

只是为了添加,md5函数返回字符串值,但md5算法生成六进制值

还记得PHP支持一些自动转换

这就是为什么php会给出一些值,但您无法检测到该值,因为即使字符串中的单个字符更改也会完全更改生成的MD5哈希


这个问题仍然很有趣。你能告诉我们你想通过添加md5散列来实现什么吗?

不是我的否决票,但是
hexdec
显然在这里不起作用,因为md5是128位的,这意味着它将转换为浮点,这意味着你将失去精度,这意味着结果不准确。如果我正确解释OP的问题,他不会问如何连接两个MD5哈希。他在问为什么
+
运算符返回一个非零整数,而当它与字符串一起使用时通常返回零。这不是我的下一票,但
hexdec
显然在这里不起作用,因为MD5是128位,这意味着它将转换为浮点,这意味着你将失去精度,这意味着结果不准确。如果我正确解释OP的问题,他不会问如何连接两个MD5哈希。他问为什么
+
操作符返回一个非零整数,而当它与字符串一起使用时通常返回零。+1作为信息,不知道md5创建了一个十六进制。。。关于我们为什么这么做——我们使用+而不是。然后发现我们得到了wierd结果:-)+1的信息,不知道md5创建了hexa。。。关于我们为什么这么做——我们使用+而不是。然后发现我们得到了更为复杂的结果:-)