生成随机字符串没有时间?

问题描述 投票:2回答:2

我知道如何使用符文和播种rand生成随机字符串。使用time.UnixNano()。我的问题是,是否可以(使用stdlib)在不使用当前时间戳(安全)的情况下播种rand?

此外,我问,因为不只是依靠时间为敏感操作不安全/漏洞生成随机字符串?

string go random
2个回答
3
投票

对于敏感操作,使用crypto/rand而不是math/rand

包[crypto /] rand实现了一个加密安全的随机数生成器。

请注意,您不需要(您不能)播种crypto/rand


1
投票

你可以用任何东西播种它,只需要一个整数。时间是常用的,因为它会发生变化并且没有很多来源可以获得不均匀的优质随机种子 - 如果使用相同的种子,您将获得相同的值序列,因此通常您需要更改的内容。

它不安全吗?绝对!如果您需要安全随机数生成,则必须使用crypto/randhttps://golang.org/pkg/crypto/rand/

crypto/rand没有提供播种方法,因为它是使用系统的加密强随机数生成器播种的。

© www.soinside.com 2019 - 2024. All rights reserved.