【发布时间】:2014-10-26 02:37:55
【问题描述】:
我目前正在玩掩护,它对 rand() 调用大喊大叫
CID 52583 (#1 of 1): Don't call (DC.WEAK_CRYPTO)
dont_call: rand() should not be used for security related applications, as linear congruential algorithms are too easy to break.
使用 urandom 返回与 rand() 相同范围内的数字是否可以轻松替换?
【问题讨论】:
-
我想答案取决于 rand() 在您的系统上返回的范围。你会比我们更清楚......(如果你想告诉我们,那就是 RAND_MAX)。
-
您是否在安全相关的应用程序中使用它,如果
rand实现(不一定是线性同余算法,但几乎可以肯定不是密码安全)很容易被破解? -
在购买满足您要求的实施之前,您需要弄清楚您的要求是什么。
-
请注意,创建名为
rand()和srand()的函数的插入式替换可能仍会被 Coverity 抱怨。您必须使用不同的名称来说服它您没有使用标准版本。 -
thx 伙计们——是的,实际上我需要一个函数来从给定范围内获取 rand 值——它不是应用程序的安全相关部分——它只是为了随机化计时信息。例如:我想要一个函数 my_random(0, MAX_RAND) - 并获得一个介于 0-MAX_RAND 范围内的值