[英]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)
srandom
或initstate
,例如使用srandom
或initstate
狀態。
由於您沒有告訴我們為什么需要隨機數,因此我們無能為力。
如果隨機數的質量非常重要(例如,出於強大的加密目的),則它可能比您想象的要難得多,並且取決於系統和硬件(請再次閱讀random(4)
頁)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.