Python 这个“时间独立”是什么意思?

Python 这个“时间独立”是什么意思?,python,tornado,Python,Tornado,在.web模块中,有一个名为\u time\u independent\u equals的函数: def _time_independent_equals(a, b): if len(a) != len(b): return False result = 0 for x, y in zip(a, b): result |= ord(x) ^ ord(y) return result == 0 它用于比较安全cookie签名,从而比

在.web模块中,有一个名为
\u time\u independent\u equals的函数:

def _time_independent_equals(a, b):
    if len(a) != len(b):
        return False
    result = 0
    for x, y in zip(a, b):
        result |= ord(x) ^ ord(y)
    return result == 0
它用于比较安全cookie签名,从而比较名称


但是关于这个函数的实现,它是否只是一种复杂的方式来表示
a==b

这个函数不只是比较字符串,它总是尝试用同样的时间来执行

这对于比较密码等安全任务非常有用。如果函数在第一个不匹配的字节上返回,攻击者可以尝试所有可能的第一个字节,并知道耗时最长的字节是匹配的。然后,他们可以尝试所有可能的第二个字节,并知道最长的一个字节是匹配的。可以重复此操作,直到推导出整个字符串。(实际上,为了克服网络中的随机延迟,你必须进行大量的平均处理,但如果你有耐心,它是有效的。)