Я сделал генератор случайных байтов для вектора инициализации реализации AES в режиме CBC,
#include <iostream>
#include <random>
#include <climits>
#include <algorithm>
#include <functional>
#include <stdio.h>
using bytes_randomizer = std::independent_bits_engine<std::default_random_engine, CHAR_BIT, uint8_t>;
int main()
{
bytes_randomizer br;
char x[3];
uint8_t data[100];
std::generate(std::begin(data), std::end(data), std::ref(br));
for(int i = 0; i < 100; i++)
{
sprintf(x, "%x", data[i]);
std::cout << x << "\n";
}
}
Но проблема в том, что он дает одну и ту же последовательность снова и снова, я нашел решение для стека, котороеиспользовать srand()
, но это, кажется, работает только для rand()
.
Любые решения для этого, также есть лучший способ генерировать nonce для генерации непредсказуемого вектора инициализации.