我正在使用+符号添加2个MD5哈希,如下所示:
md5('string1') + md5('string2')
现在,如果我使用字符串执行,就像这样:
'string1' + 'string2'
... PHPp会给我0作为返回值。但是,对于MD5哈希,它总是返回一个数值,我无法确定任何原点。
答案 0 :(得分:5)
它取决于字符串生成的哈希值。当添加“字符串”值时,PHP的行为(并且它是well documented)是取任何前导数字字符并将它们视为整数...如果没有前导数字,那么它将被视为0。
所以
"1st String" + "2nd String" => 1 + 2 => 3
使用您的数据
md5('string1') = '34b577be20fbc15477aadb9a08101ff9'
md5('string2') = '91c0c59c8f6fc9aa2dc99a89f2fd0ab5'
给
34 + 91 => 125
现在为什么要尝试添加哈希值?
答案 1 :(得分:1)
只需添加,md5函数返回字符串值,但md5算法会生成十六进制值。
还记得PHP支持一些自动播放。
这就是为什么php会给出一些值,但你无法检测到这个值,因为即使字符串中的单个字符更改也会完全改变生成的MD5哈希值。
仍有疑问非常有趣。你可以通过添加md5哈希来告诉我们你想要实现的目标吗?
答案 2 :(得分:0)
您无法使用+
添加md5哈希值,因为您无法使用+
添加任何其他类型的字符串。差异是预期的,由于PHP的rules for string to number conversion。对比一下:
'1string' + '2string'
与
'string1' + 'string2'
如果数字添加md5s会给你一个不同于零的结果,那是因为偶然你要添加的特定哈希以一个或多个十进制数字开头。
添加两个不代表十进制数字的字符串是没有正当理由的,所以不要这样做。
答案 3 :(得分:-1)
在PHP中,+
是数字加法,.
是字符串连接。
此外,md5(string)
会返回字符串 ...
所以:
$hashes = md5('string1') . md5('string2');
您可能希望以数字方式添加哈希值。然后,您需要使用hexdec()将MD5结果转换为数字。