我知道如何使用Runes和种子rand.Init与time.UnixNano()
一起去生成随机字符串。我的问题是,是否可以(使用stdlib)在不使用当前时间戳(安全)的情况下为rand播种?
此外,我问是因为不仅仅依靠时间来为不安全/脆弱的敏感操作生成随机字符串吗?
答案 0 :(得分:3)
对于敏感操作,请使用crypto/rand
而不是math/rand
:
Package [crypto /] rand实现了一种加密安全的随机数生成器。
请注意,您不需要(也不需要)种子crypto/rand
。
答案 1 :(得分:1)
您可以使用任何种子作为种子,它只需一个整数。通常使用时间,因为时间会改变,并且没有很多不恒定的随机种子的来源-如果使用相同的种子,则会获得相同的值序列,因此通常您希望改变的东西
它不安全吗?绝对!如果您需要安全随机数生成,则必须使用crypto/rand
代替:https://golang.org/pkg/crypto/rand/
crypto/rand
没有提供播种的方法,因为它是使用系统的加密强度高的随机数生成器进行播种的。