【问题标题】:Generate random string WITHOUT time?没有时间生成随机字符串?
【发布时间】:2019-05-21 02:50:38
【问题描述】:

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

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

【问题讨论】:

    标签: string go random


    【解决方案1】:

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

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

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

    【讨论】:

    • 好的,谢谢。很惊讶这个问题还没有被问到(至少我在想的术语。)
    • secure/rand 不存在,但您的链接正确指向 crypto/rand
    • @Adrian Ops,错字,已修复。谢谢。
    【解决方案2】:

    你可以用任何东西播种它,它只需要一个整数。时间是常用的,因为它会发生变化,并且没有很多非恒定的随机种子的来源——如果你使用相同的种子,你会得到相同的值序列,所以通常你想要一些改变的东西.

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-08-01
      • 2011-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多