Мне нужно генерировать случайные данные (для ключей, IV и т. Д.), Но я не могу найти правильный способ сделать это.Генерация случайных ключей/данных с помощью библиотеки openssl в Windows
Вот фон - Я разрабатываю свой сервер в c/C++ на окнах с помощью visual studio и использую библиотеку openssl1.0.1c.
Я читал документацию для генерации случайных данных с использованием OpenSSL на http://www.openssl.org/docs/crypto/RAND_add.html# и наткнулся на следующее -.
"
OpenSSL убеждается, что состояние PRNG является уникальным для каждого потока В системах, которые обеспечивают/dev/urandom, устройство случайности используется для прозрачного выделения PRNG. Однако во всех других системах приложение отвечает за посев PRNG, вызывая RAND_add(), RAND_egd (3) или RAND_load_file (3).
RAN D_seed() эквивалентен RAND_add(), когда num == энтропия.
RAND_event() собирает энтропию из событий Windows, таких как движения мыши и другое взаимодействие с пользователем. Он должен вызываться с аргументами iMsg, wParam и lParam всех сообщений, отправленных в оконную процедуру. Он оценит энтропию, содержащуюся в сообщении о событии (если есть), и добавит его в PRNG. Затем программа может обрабатывать сообщения как обычно.
Функция RAND_screen() доступна для удобства программистов Windows. Он добавляет текущее содержимое экрана в PRNG. Для приложений, которые могут захватывать события Windows, сеяние PRNG путем вызова RAND_event() является значительно лучшим источником случайности. Следует отметить, что оба метода не могут использоваться на серверах, работающих без взаимодействия с пользователем. "
Теперь мой сервер не работает в автоматическом режиме, так что я предполагаю, что я не могу использовать Rand_event() и Rand_screen() методы. Как безопасно использовать метод Rand_bytes() на Windows? Я не уже есть файл с энтропией, поэтому RAND_load_file() не может быть и речи, и ссылки на странице документации для EGD, похоже, не имеют EGD, поддерживаемого в Windows. Как я могу убедиться, что генератор случайных данных openssl заселен достаточно энтропия, чтобы я мог использовать Rand_bytes() для генерации моих ключей/ivs/солей и т. д.