пользователь регистрируется, вводит пасс, с хешем, перед записью его в БД, делается небольшое изменение - один из его символов, выбранный случайным образом, мы заменяем случайным Code: т.е. для мд5 хеша от пароля 123: 202cb962ac59075b964b07152d234b70 в базу пойдет 202cb962ac5907[COLOR=DarkRed]b[/COLOR]b964b07152d234b70, или 202c[COLOR=DarkRed]7[/COLOR]962ac59075b964b07152d234b70, или 202cb962ac59075b964b0[COLOR=DarkRed]1[/COLOR]152d234b70 и т.д. когда же пользователь будет авторизовываться, будет происходить следующая проверка - из введенного пользователем пароля получается мд5 хеш, затем посимвольно он сравнивается с хешем из БД, если получаем совпадение 31 символа из 32, то авторизация признается успешной... если же подобный хеш попадет в чьито руки, то чтобы сбрутить его, необходимо будет или перебрать в 2^128 раза больше хешей или написать модуль для ПассвордПро, который будет проводить подобную, как и при авторизации, проверку, однако мы получим заметное замедление брута во-первых из-за дополнительных операций (сравнения хешей посимвольно) и во-вторых уменьшение скорости пропорционально количеству хешей (по аналогии для хешей с солью - для каждого хеша необходимы новые вычисления), а также невозможность прогнать хеш по радужным табличкам...
ясн .. а я подумал ты про реализацию алгоритма )) ============= .зы плагин для passwordsPro писать будет безсмысленно, тк кк будет находить дрегие пароли тоже и скорость будет настолько мала что трудно себе и представить .. md5-unix будет быстрее брутиться ..
PHP: <? // md5 of pass "1" // Алгоритм шифровки .. $md5="c4ca4238a0b923820dcc509a6f75849b"; $arr=array("1","2","3","4","5","6","7","8","9","0","q","w","e","r","t","y","u","i","o","p","a","s","d","f","g","h","j","k","l","z","x","c","v","b","n","m"); $r_num=rand(0,31); echo $md5."<br>"; for($i=0;$i<32;$i++){ if($i==$r_num) $md6=$md6.$arr[rand(0,35)]; else $md6=$md6.$md5[$i]; } echo $md6."<br>"; // Алгоритм опознания хеша .. for($i=0;$i<32;$i++){ if($md6[$i]==$md5[$i]) $cont++;} if($cont==31) echo "Your hash is correct"; ?> вот от нечего делать и для тренировки(хотя где тут она !?) я накатал это вот .. я не програмист так что не против бы услышать как можно такое оптимизаровать ..
ну во-первых если модуль найдет такой пароль, то и авторизация на форуме с ним пройдет, а во-вторых теоретически (если не брать во внимание еще и коллизии) возможно существование только одного пароля, соответствующего такому измененному хешу, но не думаю что он будет проще того пасса, который введет пользователь лучше тогда уж на sha256, под них коллизии вроде еще не находили, и кстати на фоне назревающей идеи не брута пароля, а нахождения коллизии, можно заносить 2 хеша в БД (например md5 и sha1), применять идею, описанную в первом посте к обоим хешам и тогда шанс нахождения коллизий к ним обоим одновременно такой же как и шанс образования черной дыры при запуске адронного коллайдера тогда и возможность существования еще одного пароля (из-за замены одного из символов хеша) отпадает...
Всетаки вероятность подбора очень мала. Нужно чтобы хотябы 31 символ был верным, да и то, он может быть от очень огромного значения, причем из непонятных символов типа: