Соль в crypt php

Рейтинг: 2Ответов: 1Опубликовано: 25.11.2014

Всем привет.

Изучаю для себя методы шифрования, остановился на функции crypt, но никак не пойму из множества примеров (в том числе на php.net) про соль, что означают данные записи?

$salt = '$2a$07$R.gJb2U2N.FmZ4hPp1y2CN$';    
$salt = '$2a$10$';

и т.д. Что такое соль, я знаю, но что конкретно в данной функции значат все эти $ и буквы?

Ответы

▲ 1Принят

Разберем строку:

$salt = '$2a$07$R.gJb2U2N.FmZ4hPp1y2CN$';

2a - это blowfish префикс.
К слову, начиная с версии PHP 5.3.7 используется security fix, исправляющий потенциальную возможность high-bit атак. Он добавляет два новых префикса 2x и 2y. Префикс 2a был оставлен с целью обратной совместимости.
07 - весовой параметр из двух цифр (количество итераций)
R.gJb2U2N.FmZ4hPp1y2CN - соль
$ - служит в качестве разделителя параметров и обозначения начала и конца строки

$режим$количество_итераций$соль$