我使用+符号来加2 MD5散列(),如下所示:
md5('string1') + md5('string2')现在,如果我使用字符串执行,如下所示:
'string1' + 'string2'...PHPp将给我0作为返回值。但是,对于MD5散列,它总是返回一个数值,我无法确定它的任何来源。
发布于 2012-03-28 07:58:49
它将取决于字符串生成的散列值。当添加"string“值时,PHP的行为(它是有据可查)是接受任何前导数字字符,并将它们视为整数.如果没有前导数字,那么它将被视为0。
所以
"1st String" + "2nd String" => 1 + 2 => 3用你的数据
md5('string1') = '34b577be20fbc15477aadb9a08101ff9'
md5('string2') = '91c0c59c8f6fc9aa2dc99a89f2fd0ab5'给予
34 + 91 => 125现在,为什么要添加哈希值?
发布于 2012-03-28 08:19:45
md5函数只返回字符串值,而md5算法则生成十六进制值。
还记得PHP支持一些自动转换。
这就是为什么php会给出一些值,但您无法检测到该值,因为即使字符串中的单个字符发生了完全更改,也会生成MD5哈希。
问题仍然很有趣。你能告诉我们你想通过添加md5哈希来达到什么目的吗?
发布于 2012-03-28 07:59:35
不能使用md5添加+散列,就像不能使用+添加任何其他类型的字符串一样。这一差异是预期的,也是由于PHP的字符串到数字转换规则。对比一下:
'1string' + '2string'使用
'string1' + 'string2'如果数字加法md5s给出的结果与零不同,那是因为您添加的特定哈希以一个或多个十进制数开始。
没有合法的理由添加两个不代表十进制数的字符串,所以不要这样做。
https://stackoverflow.com/questions/9903292
复制相似问题