Python 关于django crypto.constant_time_compare()的测验

Python 关于django crypto.constant_time_compare()的测验,python,django,Python,Django,任何人都能说出为什么下面的评论说所花的时间与匹配的字符数无关 在我看来,所花费的时间应该取决于字符的数量 代码是从Django复制的 它与匹配的字符数无关,而与字符总数无关。正如您所注意到的,字符串中的字符数是线性的 它旨在避免依赖于比较算法的定时攻击,这些算法在到达不匹配的字符时立即退出。它与匹配的字符数无关,而与字符总数无关。正如您所注意到的,字符串中的字符数是线性的 它旨在避免依赖于比较算法的计时漏洞,这些算法在到达不匹配的字符时立即退出。您可能需要编辑问题,以解释您认为其依赖性的原因,并

任何人都能说出为什么下面的评论说所花的时间与匹配的字符数无关

在我看来,所花费的时间应该取决于字符的数量

代码是从Django复制的


它与匹配的字符数无关,而与字符总数无关。正如您所注意到的,字符串中的字符数是线性的


它旨在避免依赖于比较算法的定时攻击,这些算法在到达不匹配的字符时立即退出。

它与匹配的字符数无关,而与字符总数无关。正如您所注意到的,字符串中的字符数是线性的


它旨在避免依赖于比较算法的计时漏洞,这些算法在到达不匹配的字符时立即退出。

您可能需要编辑问题,以解释您认为其依赖性的原因,并删除对测验的任何提及,这是一个帮助解决编程问题的网站,而不是创建它们哦,我犯了一个愚蠢的错误你可能想编辑你的问题来解释为什么你认为它是相关的,并且删除任何关于测验的提及,这是一个帮助解决编程问题的网站,而不是创建它们哦,我犯了一个愚蠢的错误
def constant_time_compare(val1, val2):
    """
    Returns True if the two strings are equal, False otherwise.

    The time taken is independent of the number of characters that match.

    For the sake of simplicity, this function executes in constant time only
    when the two strings have the same length. It short-circuits when they
    have different lengths. Since Django only uses it to compare hashes of
    known expected length, this is acceptable.
    """
    if len(val1) != len(val2):
        return False
    result = 0
    if six.PY3 and isinstance(val1, bytes) and isinstance(val2, bytes):
        for x, y in zip(val1, val2):
            result |= x ^ y
    else:
        for x, y in zip(val1, val2):
            result |= ord(x) ^ ord(y)
    return result == 0