是否在Go中进行恒定时间字符串比较的内置方式?
当我在Ruby中需要这个功能时,我已经使用了Devise.secure_compare
方法。
答案 0 :(得分:21)
不是字符串,而是[]byte
。请参阅crypto/subtle
,尤其是ConstantTimeCompare
:
func ConstantTimeCompare(x, y []byte) int
如果两个相等长度的切片x和y具有相同的内容,则ConstantTimeCompare返回1。所花费的时间是切片长度的函数,并且与内容无关。
您可能知道,您可以轻松地将字符串转换为字节切片:
var x []byte = []byte("someString")