我在这里有两个实现,它从另一个网站中选择一个文本文件,并将这些文件与本地文本文件进行比较:
实施1:
function compareHash($remote , $local){
$str_remote = file_get_contents($remote);
$str_local = file_get_contents($local);
$hash_remote = md5($str_remote);
$hash_local = md5($str_local);
return $hash_remote === $hash_local;
}
$igual = compareHash('cache/text.txt' , 'http://php.net/text.txt');
if($igual)
echo 'mesmo conteudo';
else
echo 'lascou-se não é igual!' ;
实施2
$v_01 = file_get_contents('cache/text.txt');
$v_02 = file_get_contents('http://www.php.com/text.txt');
if(strcmp($v_01, $v_02) != 0) {
echo 'differently strings';
} else {
echo 'same strings';
}
在第一个实现中,使用MD5转换字符串是否合适?哪个是最佳选择,并且在处理速度方面效率最高?
答案 0 :(得分:1)
这取决于您的要求。
如果你想要在第一次差异后失败的快速比较,你可以$string_1 == $string_2
。这将表现得足够好。
如果您正在使用加密技术,则应考虑使用常量字符串比较功能,以使您的代码能够抵抗时序攻击。
https://crackstation.net/hashing-security.htm#phpsourcecode
如果您使用的是PHP 5.6.x或更高版本,则需要hash_equals()
。