Go中字符串的安全比较

时间:2013-12-18 16:32:57

标签: go

是否在Go中进行恒定时间字符串比较的内置方式?

当我在Ruby中需要这个功能时,我已经使用了Devise.secure_compare方法。

1 个答案:

答案 0 :(得分:21)

不是字符串,而是[]byte。请参阅crypto/subtle,尤其是ConstantTimeCompare

  

func ConstantTimeCompare(x, y []byte) int

     

如果两个相等长度的切片x和y具有相同的内容,则ConstantTimeCompare返回1。所花费的时间是切片长度的函数,并且与内容无关。

您可能知道,您可以轻松地将字符串转换为字节切片:

var x []byte = []byte("someString")