PHP加起来MD5哈希?

时间:2012-03-28 07:56:06

标签: php md5

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

md5('string1') + md5('string2')

现在,如果我使用字符串执行,就像这样:

'string1' + 'string2'

... PHPp会给我0作为返回值。但是,对于MD5哈希,它总是返回一个数值,我无法确定任何原点。

4 个答案:

答案 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结果转换为数字。