我正在用 C 语言在 linux 上开发项目,我需要在其中生成 12 个字节的随机数。我在互联网上搜索过,但除了 srand 或 random 函数之外我找不到任何其他功能。但这些函数只能生成 32 位(4 字节)的随机数。
我正在寻找生成 12 字节的随机数。
有人知道 linux 上提供此功能的任何库吗?
好的,最后一个解决方案:
unsigned char buf[12];
int i;
srand(time(NULL));
for (i = 0; i < sizeof(buf); i++) {
buf[i] = rand() % 256;
}
(是的,我正在使用模数 - 如果您关心均匀分布,请不要使用它。)
您没有说明 12 个随机字节对您意味着什么,以及您为什么需要它们。
您应该阅读random(4)然后也许是代码
unsigned char myrandbytes[12];
FILE* fr = fopen("/dev/urandom", "r");
if (!fr) perror("urandom"), exit(EXIT_FAILURE);
fread(myrandbytes, sizeof(char), 12, fr);
fclose(fr), fr = NULL;
但很多时候,按照该答案rand(3)
中的建议使用就足够了。您也可以使用random(3)或lrand48(3)。我通常很高兴我通常会播种 - 例如在开始时阅读或阅读。random(3)
srandom
initstate
/dev/urandom
由于您没有告诉我们为什么需要随机数,我们无法提供更多帮助。
如果随机数的质量非常重要(例如,用于强加密目的),它可能比您想象的要困难得多,并且它取决于系统和硬件(再次阅读该random(4)
页面)。