← Back to team overview

openstack team mailing list archive

[swift] make swift.common.utils.streq_const_time more efficient

 

def streq_const_time(s1, s2):

    if len(s1) != len(s2):
        return False
    result = 0
    for (a, b) in zip(s1, s2):
        result |= ord(a) ^ ord(b)
    return result == 0

+++++++++++++++++++++++++++++++++++++++++

If s1 and s2 are of the same length,  then the function will compare every
characters in them.  I think it may be more efficient as follow:

def streq_const_time(s1, s2):

    if len(s1) != len(s2):
        return False
    result = 0
    for (a, b) in zip(s1, s2):
        if ord(a) ^ ord(b):
          return False
    return True

Follow ups