根据this reference source code,函数SlowEquals
private static bool SlowEquals(byte[] a, byte[] b)
{
uint diff = (uint)a.Length ^ (uint)b.Length;
for (int i = 0; i < a.Length && i < b.Length; i++)
diff |= (uint)(a[i] ^ b[i]);
return diff == 0;
}
我得到了作者的观点,即使用 xor & 或将比较时间设为
一致,但现在我对BCrypt的密码感到很困惑
验证,是否需要做同样的事情来避免时序攻击?
或者bcrypt在散列后已经调整为一致?
所以它只是用“==”验证结果?
关于此的任何想法或文件/文章?谢谢。