Windows эквивалент этой команды bash, которая использует / dev / urandom - PullRequest
1 голос
/ 25 августа 2011

Существует ли простой эквивалент Windows для этой команды bash:

head -c 500 /dev/urandom | tr -dc abcdefghijklmnopqrstuvwxyz | head -c 9; echo

Я думаю, что основной проблемой является / dev / urandom, так как я слышал о CryptoAPI, но я не знаю, достаточно ли он криптографически безопасен.

EDIT: извините, код используется в php-скрипте, а %s представляет подстановку строк; Я забыл сделать эту замену, когда задал вопрос. Исправлена.

1 Ответ

2 голосов
/ 25 августа 2011

Взято из RFC 4086:

7.1.3. Windows CryptGenRandom

Рекомендация Microsoft пользователям широко распространенной Windows операционная система, как правило, использовать псевдослучайный CryptGenRandom вызов по генерации номера с помощью криптографической службы CryptAPI поставщик. Это обращается к поставщику криптографических услуг библиотека, указатель на буфер, с помощью которого вызывающая сторона может предоставить энтропия и в которую возвращается сгенерированная псевдослучайность, и указание количества октетов случайности.

Поставщик услуг криптографии Windows CryptAPI хранит начальное число переменная состояния с каждым пользователем. Когда CryptGenRandom вызывается, это сочетается с любой случайностью, представленной в вызове, и с различными системные и пользовательские данные, такие как идентификатор процесса, идентификатор потока, системные часы, системное время, системный счетчик, состояние памяти, свободные дисковые кластеры и хэшированный блок пользовательской среды. Все эти данные поступают в SHA-1, и выход используется для заполнения потока ключей RC4. Этот ключевой поток используется для получения запрошенных псевдослучайных данных и для обновления переменная начального состояния пользователя.

Пользователям Windows ".NET", вероятно, будет легче использовать Интерфейс метода RNGCryptoServiceProvider.GetBytes.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...