DEV_RANDOM
генерирует случайные целые числа из /dev/random
или эквивалента, который прослушивает непредсказуемые данные, такие как движение мыши, нажатия клавиш и т. д., для создания безопасных данных. Если нет нажатий клавиш и т. Д., Он просто ждет, пока не будет достаточно данных ... и поэтому он медленный.
DEV_URANDOM
использует /dev/urandom
или его эквивалент, и хотя он может также использовать данные выше, в дополнение к этому он сочетает в себе генераторы псевдослучайных чисел, чтобы предоставить вам случайные данные в режиме реального времени (что более предсказуемо, но это часто не имеет значения).
Они используются для определения способа построения IV.
Теперь на капельницы.
IV используются для получения начального начального числа для случайных функций, используемых функциями шифрования.
Вы используете ECB. Первое, на что следует обратить внимание, это то, что ECB не использует IV, поэтому то, что вы написали, не имеет смысла; если вы используете ECB, вы можете вообще не создавать IV, и вы сможете без проблем расшифровать свои данные. Но с другой стороны, вы не должны использовать ECB. ECB кодирует ваши данные таким образом, что каждый блок с одними и теми же данными будет выглядеть одинаково. CBC, с другой стороны, удаляет каждый блок данными из предыдущего блока (и для этого ему нужен IV). Чтобы продемонстрировать разницу между ними, посмотрите на это:
Слева направо: исходное изображение, изображение, закодированное в режиме ECB, и изображение, закодированное в режиме CBC.
Если вы хотите использовать CBC, вы также должны повторно генерировать IV для каждого фрагмента данных, которые вы шифруете отдельно, в противном случае это так же плохо, как использование ECB. Повторное создание векторов инициализации каждый раз предотвращает атаки, основанные на повторении.
Наконец, если вы используете CBC, вам потребуется сохранить его IV, чтобы вы могли расшифровать текст позже. Если вы этого не сделаете, вы получите мусор. К счастью, большинство алгоритмов шифрования разработаны таким образом, что IV могут быть общедоступными, поэтому вам не нужно беспокоиться о сохранении IV в секрете.
TL;DR: используйте CBC с общедоступными IV, повторно созданными для каждых данных отдельно.
(Кроме того... если вас не волнует расшифровка, вас могут заинтересовать криптографические хэши.)
person
rr-
schedule
15.05.2015
MCRYPT_DEV_RANDOM
. ПопробуйтеMCRYPT_DEV_URANDOM
и посмотрите, будет ли это быстрее. Кроме этого, вам следует дождаться эксперта по криптографии, но, насколько я знаю, вам определенно нужен IV. - person deceze♦   schedule 15.05.2015MCRYPT_DEV_URANDOM
очень хорошая. Но я бы остался больше, чтобы проверить описательные ответы. - person kuldeep.kamboj   schedule 15.05.2015