усиление MD5 или солим пароли

MD5 (Message Digest 5) - 128-битный алгоритм хеширования, разработанный профессором Рональдом Л. Ривестом в 1991 году. Предназначен для создания «отпечатков» или «дайджестов» сообщений произвольной длины. Пришёл на смену MD4, который был несовершенен.

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

Чтобы усилить защиту информации, зашифрованной MD5 , разработчики программного обеспечения придумали довольно-таки интересный способ искусственного усложнения пароля - накладывание «соли».

Итак, «соль» представляет собой заранее выбранный набор символов (состоящий из обоих регистров, цифр и спецсимволов), которые накладываются или склеиваются с самим паролем или с хэш-суммой пароля.

Существует несколько способов наложения соли, но не все дают положительный эффект.

Вот пример, которым я пользуюсь для защиты своих веб-проектов (код позаимствован с сайта xakep.ru):

<?php
//Измените на свой набор символов
$salt="123!#&%asgfHTA";
//Пароль на вход
$pass="proba";

//Собственно сама функция
function my_crypt($pass,$salt)
{
$spec=array('~','!','@','#','$','%','^','&','*','?');
$crypted=md5(md5($salt).md5($pass));
$c_text=md5($pass);
for ($i=0;$i<strlen($crypted);$i++)

{
if (ord($c_text[$i])>=48 and ord($c_text[$i])<=57){
@$temp.=$spec[$c_text[$i]];
} elseif(ord($c_text[$i])>=97 and ord($c_text[$i])<=100){
@$temp.=strtoupper($crypted[$i]);
} else {
@$temp.=$crypted[$i];
}
}

return md5($temp);

}

//Пример использования
echo my_crypt($pass,$salt);

?>


Также рекомендую следующие записи:


Понравилась статья? Подпишись на обновления по RSS, E-mail или добавляйте меня в Twitter.

Один комментарий


Dimonyga пишет:
12.10.2010 в 17:51

На мой взгляд подсаливать лучше именем пользователя, подсмотрено в форуме SMF не помню какой версии, там было $crypted=md5($salt."|".$pass); и вызовов функции меньше, и удобнее как-то на мой взгляд, всё-же функция md5 отжирает не мало процессорного времени.


Оставить комментарий

XHTML: Вы можете использовать эти теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>