【问题标题】:What is the best replacement for Windows' rand_s in Linux/POSIX?Linux/POSIX 中 Windows rand_s 的最佳替代品是什么?
【发布时间】:2010-09-12 07:44:18
【问题描述】:

问题不在于随机性本身(我们有 rand),而在于加密安全的 PRNG。什么可以在 Linux 或理想的 POSIX 上使用? NSS有什么有用的吗?

澄清:我知道 /dev/random,但它可能会用完熵池。而且我不确定 /dev/urandom 是否保证在密码学上是安全的。

【问题讨论】:

    标签: linux security random cryptography


    【解决方案1】:

    /dev/random 设备旨在成为加密安全位的来源。

    【讨论】:

      【解决方案2】:

      使用/dev/random(需要用户输入,例如鼠标移动)或/dev/urandom。后者有一个熵池,除非池为空,否则不需要任何用户输入。

      你可以像这样从池中读取:

      char buf[100];
      FILE *fp;
      if (fp = fopen("/dev/urandom", "r")) {
          fread(&buf, sizeof(char), 100, fp);
          fclose(fp);
      }
      

      或者类似的东西。

      【讨论】:

        【解决方案3】:

        来自Wikipedia(我的斜体):

        /dev/random 的对应物是 /dev/urandom(“解锁”随机源),它重用内部池以产生更多伪随机位。这意味着调用不会阻塞,但输出包含的熵可能少于从 /dev/random 读取的相应信息。 意图是作为一个加密安全的伪随机数生成器。这可能用于不太安全的应用程序。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2014-01-15
          • 1970-01-01
          • 2013-04-14
          • 2015-09-18
          • 2011-02-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多