由于python的某些版本控制问题,我势必会使用自定义函数来比较HMAC(SHA512)。为此,我发现了以下功能:
def compare_digest(x, y):
if not (isinstance(x, bytes) and isinstance(y, bytes)):
logfile.debug("both inputs should be instances of bytes")
if len(x) != len(y):
return False
result = 0
for a, b in zip(x, y):
result |= a ^ b
return result == 0
我在Django中使用了它,因此我创建了一个记录器(日志文件),该记录器为我将调试消息保存到文件中。
代码在这一步中断:
result |= a ^ b
但是,我不知道| =运算符代表什么,这里发生了什么。如果有人可以解释这一点,我可以尝试重写它。
我的python版本是(不幸的是2.7.4)和2.7.7,我不会有问题,因为该函数可以正确移植并可用。
|
是按位或运算符。|=
是按位或等价的+=
,-=
等,基本上a |= b
是用于简写a = a | b
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句