Php 不同意同一字符串的md5哈希,示例如下

Php 不同意同一字符串的md5哈希,示例如下,php,hash,Php,Hash,这让我抓狂,我的md5不同意。我有这个字符串: “组合生成器”是一个允许您轻松创建的工具 通过选择相关属性进行的一系列组合。对于 例如,如果您销售三种不同尺寸和两种不同款式的t恤 不同的颜色,生成器将为您创建六种组合 当我在计算机上使用md5函数(使用PHP5.5.0)对其进行哈希时,它会生成以下哈希:422f3f656e1a5f95e8b5cf7565d815b5 与我计算机的结果一致 我的电脑和电脑都有问题 该字符串/md5对最初由另一台计算机计算,该计算机也给出与md5.cz相同的结果 我

这让我抓狂,我的md5不同意。我有这个字符串:

“组合生成器”是一个允许您轻松创建的工具 通过选择相关属性进行的一系列组合。对于 例如,如果您销售三种不同尺寸和两种不同款式的t恤 不同的颜色,生成器将为您创建六种组合

当我在计算机上使用md5函数(使用PHP5.5.0)对其进行哈希时,它会生成以下哈希:422f3f656e1a5f95e8b5cf7565d815b5

与我计算机的结果一致

我的电脑和电脑都有问题

该字符串/md5对最初由另一台计算机计算,该计算机也给出与md5.cz相同的结果

我阅读了有关编码问题的文章(尽管字符串不包含任何非ASCII字符),因此我在计算机上尝试了以下代码:

<?php

$str = "The Combinations Generator is a tool that allows you to easily create a series of combinations by selecting the related attributes. For example, if you're selling t-shirts in three different sizes and two different colors, the generator will create six combinations for you.";

echo "$str<BR/>";
echo md5($str)."<BR/>";
echo md5(utf8_encode($str))."<BR/>";
echo md5(utf8_decode($str))."<BR/>";


die();

md5就是md5。就这些。如果您从不同的(无缺陷的)实现中得到不同的哈希,那么您将输入不同的输入。请记住,md5的设计目的是在输入稍有不同的情况下产生完全不同的输出。一个测试字符串末尾的一个空白字符(制表符、换行符等)将完全破坏预期的哈希,因为您输入了不同的输入。

md5是md5。就这些。如果您从不同的(无缺陷的)实现中得到不同的哈希,那么您将输入不同的输入。请记住,md5的设计目的是在输入稍有不同的情况下产生完全不同的输出。一个测试字符串末尾的一个空白字符(制表符、换行符等)将完全破坏预期的哈希值,因为您输入了不同的输入。

我最好的猜测是,它与单词“you're”中的“mark”和字符编码有关。如果删除该报价,则两个站点报告相同的md5

我最好的猜测是,这与“you're”一词中的“mark”和字符编码有关。如果删除该报价,则两个站点报告相同的md5

我尝试将上面的字符串以增量方式输入到您在问题中链接到的两个站点,结果发现,如果您在销售t恤衫,那么在md5.cz中破坏生成器的字符就是撇号


如果在将字符串馈送到哈希器之前,先将字符串中的特殊字符去掉,可能会使用类似urlencode()的方法保留字符串的唯一性,则应该为任何字符串获取匹配的哈希。

我尝试将上面的字符串增量馈送到您在问题中链接的两个站点,事实证明,在md5.cz中破坏生成器的角色是在销售t恤时使用的撇号


如果在将字符串馈送给哈希器之前,先去掉字符串中的特殊字符,可能会使用urlencode()之类的东西来保留字符串的唯一性,那么应该为任何字符串获取匹配的哈希。

字符串需要完全相同,包括空格。 可能这些站点正在使用一些转换,如trim()或stripslashes()。
md5将仅在字符串完全相同的情况下返回相同的值。

字符串需要完全相同,包括空格。 可能这些站点正在使用一些转换,如trim()或stripslashes()。
md5将仅在字符串精确时返回相同的值。

什么?这是正确的。这有点令人震惊。也许其中一个网站逃逸了。你知道怎么修复吗?在我的机器上,我的意思是,我不在乎这两个网站是否存在分歧。我需要获得与md5.czyep相同的结果,他们可能会做一些愚蠢的事情,比如md5(addslashes($str));甚至更糟糕的是,他们可能会在开启了魔咒的情况下运行:)什么?这是正确的。这有点令人震惊。也许其中一个网站逃逸了。你知道怎么修复吗?在我的机器上,我的意思是,我不在乎这两个网站是否存在分歧。我需要获得与md5.czyep相同的结果,他们可能会做一些愚蠢的事情,比如md5(addslashes($str));甚至更糟糕的是,它们可能在启用magic_quotes的情况下运行:)这两个页面的输入之间存在差异。一个是单行,另一个是文本块。单个字符
A
散列相同的字符。这种差异可能是由于某些空格差异造成的,例如换行符。您在OP中提供的输入是格式化的,因此我们无法确切地告诉您正在做什么…这两个页面的输入之间存在差异。一个是单行,另一个是文本块。单个字符
A
散列相同的字符。这种差异可能是由于某些空格差异造成的,例如换行符。您在OP中提供的输入已格式化,因此我们无法确切地告诉您正在做什么。。。