[一段时间以前,我发现了此函数(不幸的是,我不记得它来自哪里,很可能来自某些Python框架),该函数比较两个字符串并返回bool值。了解这里发生的事情非常简单。在char之间找到xor会返回1(真),因为它们不匹配。
def cmp_strings(str1, str2):
return len(str1) == len(str2) and sum(ord(x)^ord(y) for x, y in zip(str1, str2)) == 0
但是为什么要使用此功能?与str1==str2
不同吗?
您正确地说,我们可以使用str1 == str2。我不能说为什么作者要对该函数进行编程,但是我可以说该函数可以替代与“ ==”
进行比较比较相似长度的任何字符串需要花费相似的时间。当字符串敏感时,用于安全性。通常,字符串是密码哈希。