gpt4 book ai didi

python - 为什么要通过计算字符的异或来比较两个字符串?

转载 作者:行者123 更新时间:2023-12-05 00:44:41 26 4
gpt4 key购买 nike

前段时间我发现这个函数(不幸的是,我不记得它来自哪里,很可能来自某个 Python 框架)比较两个字符串并返回一个 bool 值。很容易理解这里发生了什么。
如果它们不匹配,则在 char 之间查找 xor 返回 1 (True)。

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一样?

最佳答案

比较具有相同长度的任何字符串需要相似的时间。当字符串敏感时,它用于安全。通常它用于比较密码哈希。

==使用时,Python 会在找到第一个不匹配的字符时停止比较字符。这对哈希不利,因为它可以揭示哈希与匹配的接近程度。这将有助于攻击者暴力破解密码。

就是这样 hmac.compare_digest 作品。

关于python - 为什么要通过计算字符的异或来比较两个字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59468976/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com