2015-05-30 2 views
0

Могу ли я сделать этоМодифицированный SHA256 для ПСЧ высева

1. Copy SHA hash constants to eight 32bit work variables. 
2. Expand message. 
3. Mix work variables (SHA inner loop). 
4. Output work variables to PRNG state. 

вместо обычной процедуры (один блок сообщений)

1. Pad message block. 
2. Copy SHA hash constants to hash. 
3. Read hash into eight 32bit work variables. 
4. Expand message. 
5. Mix work variables (SHA inner loop). 
6. Add work variables to hash. 
7. Output hash to PRNG state. 

, если я только хочу хороший бит смешивание некоторого входного энтропии для посева некриптографический PRNG? Безопасность совершенно не имеет значения. Все, что мне нужно, - создать хорошее состояние PRNG из метки времени в сочетании с некоторыми аппаратными битами (8-байтовая метка времени, 56 байт от аппаратного обеспечения).

+0

Если вам просто нужно некоторое перемешивание, то как насчет функции ядра Salsa20? Это не криптографически сильный хэш, а трюк и быстрее, чем SHA256. –

+0

Спасибо, но скорость не очень важна, потому что это только для посева. Обычно это делается только один раз. Объем данных, который должен быть хэширован, также очень мал. Я просто хочу удалить какой-то потенциально ненужный код. – Thorham

ответ

0

Хотя я не уверен, о специфике того, как вы хотите, чтобы упростить вещи, как правило, упрощенно криптографический алгоритм, не криптографические цели просто прекрасно, если вы документа очень четко, что использование криптографического примитива не подразумевают любую криптографическую силу в полученном коде.

Обычно вы можете реализовать точную спецификацию, чтобы вы могли проверить ее на сторонней ссылке (чтобы убедиться, что код подключен как ожидалось и что данные не удалены и т. Д.), А затем уменьшите количество раундов поэтому он идет намного быстрее.

Общей мотивацией для этого является доступ к аппаратным ускорениям для криптографического алгоритма.

Однако, если ваш вход представляет собой 64 бита фиксированной длины, то sha256 обычно больше проблем, чем того стоит.

Вы не указали размер состояния PRNG. Если это больше, чем 64 бита, вы, вероятно, просто захотите засеять простой 64-разрядный PRNG своим семенем, а затем используйте это итеративно, чтобы заполнить больший буфер состояния PRNG. Если это ровно 64 бита, то может быть достаточно чего-то вроде функции смешивания MurmurHash.

Смежные вопросы