查看 Go 标准库,有一个ConstantTimeByteEq函数,如下所示:
func ConstantTimeByteEq(x, y uint8) int {
z := ^(x ^ y)
z &= z >> 4
z &= z >> 2
z &= z >> 1
return int(z)
}
现在,我理解需要进行恒定时间字符串(数组等)比较,因为常规算法可能会在第一个不相等元素之后短路。但是在这种情况下,两个固定大小整数的常规比较不是已经在 CPU 级别进行了恒定时间操作吗?
元芳怎么了
四季花海
相关分类