Я хотел сказать что покажу как защитить пароли юзеров на своем сайте с помощью соли. Для чего используется соль? Допустим вашу базу данных на сайте взломали, а там полностью открыты пароли. Никуда не годится, нужно шифровать что бы хакеру обидно стало. Ну что же, можно зашифровать в хэш md5, функцией md5() Например: Code: <? $pass = md5("12345"); echo $pass; ?> Выведет результат: 827ccb0eea8a706c4c34a16891f84e7b Но не тут то было, хакер полезет в ближайший словарь, допустим http://hashcracking.ru/, http://crackfor.me/ И дешифрует хэш, такой способ шифровки надежен для автоматически сгенерированных паролей состоящих из 16 символов, ну ведь не все используют такие пароли, правильно? Придется усложнять задачу, «присыпим» соль. Соль – это автоматически генерируемая строка, которая «сыпится» на хэш md5. Создадим функцию для генерации соли: Code: function gSalt() { $salt = ''; $length = rand(5,10); // длина соли (от 5 до 10 символов) for($i=0; $i<$length; $i++) { $salt .= chr(rand(33,126)); // выбираем символ из ASCII-table } return $salt; // выводим соль } Использовать можно как хотите, записываете в бд. например: Code: $pass = md5('12345').gSalt(); mysql_query("INSERT INTO users (pass, salt) VALUES (".$pass.",".gSalt().")"); Теперь лучше усложнить задачу, два раза зашифруем пароль, сначала в md5, потом сам хэш md5 с солью опять в md5 Code: $pass = md5(md5('12345').gSalt()); Можно приступить к проверке пароля на правильность. Code: $md5 = '9e643770b1a1d3fdcafec1c3a1e02d27'; $salt = 'i[BxGS'; if (md5(md5('12345').$salt) == $md5) { echo 'Пароль правильный'; } ну $salt и $md5 выбираем из базы данных, пароль вставляем тот что записывали в бд с солью (в данном случае 12345) Если выводит «Пароль правильный» значит вы все верно сделали.