В стандартной библиотеке Go Go есть функция ConstantTimeByteEq, которая выглядит следующим образом:
func ConstantTimeByteEq(x, y uint8) int {
z := ^(x ^ y)
z &= z >> 4
z &= z >> 2
z &= z >> 1
return int(z)
}
Теперь я понимаю необходимость постоянного сравнения string (массив и т.д.), так как регулярный алгоритм может замыкаться после первого неравного элемента. Но в этом случае не является регулярным сравнением двух целых чисел фиксированного размера с постоянной операцией времени на уровне ЦП?