Задать вопрос
@flexpc

Как измерить температуру процессора в си шарп?

Я пишу код в котором мне не обходимо использовать Random, и я хочу использовать Seed для рандома. В качестве него я хочу использовать температуру процессора. Искал в интернете как получить температуру процессора, нашёл что это можно сделать через ManagementObjectSearcher, но он выдает целое число, а не с плавающий точкой, что является не очень хорошо для сида. Есть ли какие-нибудь другие способы поиска температуры, желательно с большим количеством цифр после точки. Если других способов нет, то что еще можно использовать для Сида, что бы рандом был правда хорошим, а не таким какой он есть по умолчанию. Спасибо.
  • Вопрос задан
  • 314 просмотров
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 4
Nipheris
@Nipheris Куратор тега C#
Если других способов нет, то что еще можно использовать для Сида, что бы рандом был правда хорошим, а не таким какой он есть по умолчанию.

Сделайте так же, как в VeraCrypt - предоставьте пользователю возможность пошевелить мышкой случайным образом.
Ответ написан
Комментировать
mayton2019
@mayton2019
Bigdata Engineer
Этот датчик ведь не создавался для криптографии. Следовательно он будет подвержен дефектам. Например будет часто предсказуем. А если не подключен - будет постоянно выдавать 0 например. Или для 80% кейсов (температурных режимов) он будет выдавать известное распределение целых чисел. Гауссово распределение с мат-ожиданием в точке 60 градусов.

Всё это - потенциальные уязвимости для функции seed.
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Что значит "рандом был хорошим"? Ты можешь сформулировать это в виде "генерю 100500 случайных чисел стандартным алгоритмом, в распределении видны такие-то и такие-то аномалии"?
Если тебе для целей криптографии, то используй WinAPI функцию CryptGenRandom() или обёртки над ней. Хотя она устарела, так что можешь посмотреть в сторону BCryptGenRandom(). Ну или как выше посоветовали, пусть пользователь мышкой пошевелит.
Для всех остальных целей тебе и дефолтный генератор сойдёт. В качестве сида возьми метку текущего времени unix, опционально смешай её с ID твоего процесса. Если тебе не требуется инициализировать десяток генераторов случайных чисел за раз, этого хватит.
Ответ написан
Комментировать
Если тебе тебе нужен непредсказуемый/крипто-пригодный рандом, то посмотри на rngcryptoserviceprovider
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы