在Linux / POSIX中Windows的rand_s的最佳替代品是什么?

时间:2008-09-23 10:19:43

标签: linux security random cryptography

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

澄清:我知道/ dev / random,但它可能会耗尽熵池。而且我不确定/ dev / urandom是否保证在加密方面是安全的。

3 个答案:

答案 0 :(得分:5)

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

你可以这样从游泳池中读到:

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

或类似的东西。

答案 1 :(得分:5)

来自Wikipedia(我的斜体):

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

答案 2 :(得分:3)

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