Какой формат выводит /dev/urandom?

#c #ubuntu

Вопрос:

Привет, может кто-нибудь сказать мне, какой формат /dev/urandom выводит и как я могу воспроизвести вывод вручную?.

Я пытаюсь удалить идею случайности из сценария, который я пишу/использую, и вместо этого размещаю увеличивающееся значение в порядке, например 1,2,3,4,5 и т. Д…

Тем не менее, /dev/urandom не выводит целые числа, я не знаю, в каком формате выводится. Это похоже на какой-то шестнадцатеричный/двоичный код

Я думаю, что это один из способов использования /dev/urandom

 hexdump -C -n 8 /dev/random
 

Однако, возможно, есть и другие способы. Я просто пытаюсь удалить любую случайность из своего сценария и заменить ее увеличивающимся значением. Поэтому в порядке слов вместо случайных значений я хочу, чтобы все они были в порядке от первого возможного в диапазоне /dev/urandom до последнего значения в диапазоне /dev/urandom.

Кто-нибудь знает, как это сделать?

— обновление: Использование этой строки было совершенно неправильным подходом в моем первоначальном вопросе

 hexdump -C -n 8 /dev/random
 

потому что
/dev/urandom на самом деле выводит целое число, обычно не двоичное/шестнадцатеричное, как я сейчас выяснил.

Комментарии:

1. Когда вы спрашиваете 1, 2, 3, 4, 5 , каков тип этих значений? int ? char ? В этом и кроется ключ.

2. Если вам не нужны случайные числа, не используйте /dev/urandom. Просто увеличьте переменную в диапазоне значений.

3. @PaulSanders пожалуйста, прочтите мои комментарии ниже для hookenz

4. @dbush да, точно, но вывод не цифры. Так что да, мне нужно знать, каков диапазон? и как установить первое значение диапазона, а затем выполнить цикл до последнего значения в диапазоне.

5. @PaulSanders я не уверен, что тип вывода /dev/urandom-это то, что я пытаюсь понять. Я не думаю, что это int или символ.

Ответ №1:

Чтение из /dev/urandom просто дает вам случайные байты. Код, который вы упомянули в комментариях, считывает 32 случайных байта из /dev/urandom в буфер.

Если вам нужны не случайные значения, а набор последовательных значений, запишите (например) значения от 1 до 32 в 32 байтах, т. е.:

 for (i=0;i<32;i  ) {
    seckey[i]=i 1; 
}
 

Ответ №2:

Нет никакого формата. Это случайные байты. Каждый байт является случайным.

Комментарии:

1. Спасибо за ваш ответ. Знаете ли вы, как я могу вывести первый возможный байт во всем возможном диапазоне

2. Как вы и сказали, это случайная последовательность байтов. Знаете ли вы, каким будет первый возможный байтовый вывод?

3. Считайте один байт. Это 0 — 255 возможных значений. Если вы прочитаете два байта как слово, вы получите значения 0-65536 и т. Д.

4. хорошо, отлично, но я все еще не понимаю, как это работает. Я покажу вам, что именно я пытаюсь сделать. если вы посмотрите на этот файл в строке 22 — github.com/nickfarrow/niceBit/blob/master/niceBit.c это настройка значения SecKey

5. однако скрипт генерирует случайные значения, я пытаюсь изменить его, чтобы он был только первым значением диапазона, и полностью удалить /udev/random, вы знаете, как это сделать?