Вы можете напрямую назначить возвращаемое значение rand () mod 256 для элементов массива:
char iv[8];
int i;
srand(time(NULL));
for (i = 0; i <8; i++)
iv[i] = rand()%256;
Таким образом можно увидеть некоторые -ve числа в массиве iv
, когда вы пытаетесь распечатать его как целое число.
Допустим, rand()%256
дал 255, то есть 1111 1111
. Очевидно, что самый важный бит установлен, поэтому при попытке напечатать его как целое число он будет интерпретирован как -ve число.
Чтобы избежать получения -ve чисел, вы должны объявить iv как массив беззнаковых символов:
unsigned char iv[8];