簡體   English   中英

如何生成12個字節的隨機數?

[英]How to generate Random number of 12 bytes?

我正在C中的Linux上的項目中,我需要生成12個字節的隨機數。 我已經在互聯網上進行搜索,但是除了求職或隨機函數外,我找不到其他任何內容。 但是這些函數只能生成隨機數的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)感到滿意,我通常會在開始時通過讀取/dev/urandom進行random(3) srandominitstate ,例如使用srandominitstate狀態。

由於您沒有告訴我們為什么需要隨機數,因此我們無能為力。

如果隨機數的質量非常重要(例如,出於強大的加密目的),則它可能比您想象的要難得多,並且取決於系統和硬件(請再次閱讀random(4)頁)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM