【发布时间】:2019-05-21 02:50:38
【问题描述】:
我知道如何使用 Runes 生成随机字符串并使用 time.UnixNano() 播种 rand.Init。我的问题是,是否可以(使用标准库)在不使用当前时间戳(安全)的情况下播种 rand?
此外,我问是因为不只是依靠时间为敏感操作生成随机字符串不安全/漏洞吗?
【问题讨论】:
我知道如何使用 Runes 生成随机字符串并使用 time.UnixNano() 播种 rand.Init。我的问题是,是否可以(使用标准库)在不使用当前时间戳(安全)的情况下播种 rand?
此外,我问是因为不只是依靠时间为敏感操作生成随机字符串不安全/漏洞吗?
【问题讨论】:
【讨论】:
secure/rand 不存在,但您的链接正确指向 crypto/rand。
你可以用任何东西播种它,它只需要一个整数。时间是常用的,因为它会发生变化,并且没有很多非恒定的随机种子的来源——如果你使用相同的种子,你会得到相同的值序列,所以通常你想要一些改变的东西.
它不安全吗?绝对地!如果您需要安全随机数生成,您必须改用crypto/rand:https://golang.org/pkg/crypto/rand/
crypto/rand 不提供播种方法,因为它是使用系统的强加密随机数生成器播种的。
【讨论】: