hash_equals(),防止时序攻击,字符串比较函数

比较字符串相等时如果使用双等 == 可能会有时序攻击的危险

比如比较

"abscdd" == $request->code

  

那么两个字符串是从第一位开始逐一进行比较的,发现不同就立即返回 false,那么通过计算返回的速度就知道了大概是哪一位开始不同的,这样就可以按位破解。

而使用 hash_equals 比较两个字符串,无论字符串是否相等,函数的时间消耗是恒定的,这样可以有效的防止时序攻击

hash_equals('abscdd',$request->code)

比较两个字符串,无论它们是否相等,本函数的时间消耗是恒定的。

本函数可以用在需要防止时序攻击的字符串比较场景中, 例如,可以用在比较 crypt() 密码哈希值的场景

原文地址:https://www.cnblogs.com/lfhphp/p/13544165.html