草庐IT

ConstantTimeByteEq

全部标签

go - 试图从 Go 中理解这个函数,为什么要创建一个始终在恒定时间内运行的函数,它是如何工作的?

我遇到了以下函数crypto/subtle包,这引起了我很大的好奇心,希望有人能解释一下它背后的目的。谢谢,//ConstantTimeByteEqreturns1ifx==yand0otherwise.27funcConstantTimeByteEq(x,yuint8)int{28z:=^(x^y)29z&=z>>430z&=z>>231z&=z>>13233returnint(z)34} 最佳答案 它可以防止针对密码系统的定时攻击:任何代码路径都需要完全相同的时间。如果您不注意时间安排,您会打开一个旁道,从而泄露您的secret

go - 试图从 Go 中理解这个函数,为什么要创建一个始终在恒定时间内运行的函数,它是如何工作的?

我遇到了以下函数crypto/subtle包,这引起了我很大的好奇心,希望有人能解释一下它背后的目的。谢谢,//ConstantTimeByteEqreturns1ifx==yand0otherwise.27funcConstantTimeByteEq(x,yuint8)int{28z:=^(x^y)29z&=z>>430z&=z>>231z&=z>>13233returnint(z)34} 最佳答案 它可以防止针对密码系统的定时攻击:任何代码路径都需要完全相同的时间。如果您不注意时间安排,您会打开一个旁道,从而泄露您的secret

go - ConstantTimeByteEq 是如何工作的?

在Go的crytography库中,我找到了这个函数ConstantTimeByteEq.它有什么作用,如何工作?//ConstantTimeByteEqreturns1ifx==yand0otherwise.funcConstantTimeByteEq(x,yuint8)int{z:=^(x^y)z&=z>>4z&=z>>2z&=z>>1returnint(z)} 最佳答案 x^y是xXORy,当参数不同时结果为1,当参数相同时结果为0:x=01010011y=00010011x^y=01000000^(x^y)否定这一点,即当参