вот я так подумал(я могу думать!) что если выполнять шифрование md5 дважды? код это особо увеличивать не будет: вместо Code: md5($password); будет Code: md5(md5($password)); а вот брут этого будет сильно затруднён т.к. расшифровать хеш в хеше будет наааамного сложнее! ну что вы думаете по этому поводу?
ну вот если взять пароль "password" то его md5 хеш будет равен 5f4dcc3b5aa765d61d8327deb882cf99 а дважды md5 будет 696d29e0940a4957748fe3fc9efd22a3 в итоге в базе храниться такой же по размеру хеш,а вот расшифровать его я бы не сказал что в 2 раза труднее(медленнее),ведь при расшифровке просто md5 хеша в среднем где-то на 6-10 символах расшифровываеться а тут 33 символа да ещё фиг догадаешься что это дважды зашифрованно.
хм в 3 крякми от без гуя тоже было что то вроде for 1 do 100000 begin md5('string'); Ну и все равно его сломали подбором меньше чем за 2 дня .
Впринципе если знать что именно так хешируется: md5(md5($password)); то подбор замедляется,грубо говоря в 2 раза. (Всё зависит от вычислительных способностей) scrat,чтобы подобрать пароль к хешу надо: 1)md5(md5($password_brut));где $password_brut-пароль из словаря и.т.д 2)сравнить : md5(md5($password_brut)) и хеш который ломаем.
брутфорс в данном случае не будет особо затруднен, особенно если знать алгоритм.. гораздо эффективнее использовать более сложные алгоритмы с применением salt..
Всё верно. Если знать алгоритм, то брут затрудниться в два раза, а если не знать, то чтобы dc5f4c3b5aa765d61d8327deb882cf99 превратилось в 696d29e0940a4957748fe3fc9efd22a3 понадобиться пара сотен лет (если без коллизий. Чистый брут)
md5(md5($string)); Ломаеться так: Первым делом подбираем строку к хешу чтобы она была равна 696d29e0940a4957748fe3fc9efd22a3=5f4dcc3b5aa765d61d8327deb882cf99 а дальше брутим 5f4dcc3b5aa765d61d8327deb882cf99 как обычный хещ так что не вижу сособой сложности ^^ тем более что MD5 работает сотые доли секунды на 1 пентиумах
По-моему не ахти надежно, т.к. количество коллизий с увеличением количества процедур хеширования увеличивается в геометрической прогрессии, т.е. казалось бы расшифровать труднее, а оказывается, в разы проще...
О том, как был взломан crackme 3 Bad guy'a, где брался 30000 раз хеш от пароля p.s. Правда там пасс был четырехсимвольный...
Делаем так, если пишем, например, авторизацию на свой мега-секурный-CMS: 1. Генерируем рандомную соль 2. Используя соль криптуем пароль md5(md5($password . $salt)); 3. Пишем в БД и соль и криптованый пароль 4. При авторизации берем отправляемый нам пароль, выдираем из БД соль, криптуем и сравниваем получившееся с паролем в БД В куках пишем только пароль и можно замуту с сессиями сделать И если сопрут куки и при наличии фишки с сессиями - взлом аккаунта быстро просечется (на своей CMS я сделал логирование подобных попыток авторизации, если вдруг ломятся не с того IP, который прописан в сессии).
Не факт что такая попытка авторизации является взломом. К примеру: сидит человек в инете через GPRS, т.к. сама посебе это штука ненадежная, канал рвется. Человек соединяется еще раз, dhcp выдает ему новый IP. Чел обновляет страницу в браузере, которому на махинации с реконнектами наплевать, и тут твоя CMS орет: "Аааа!!! Подлый хакир!!!". Некрасиво выходит... ИМХО, лучше просто включить привязку сессии к IP в настройках PHP. Тогда и сессию не сопрут, и левых логов не будет, и клиента обзывать не будут), просто попросят войти заново.
Никто и не говорит - просто в системе останется запись об этом - и если пользователь обнаружит, что, скажем, во время его отсутствия кто либо заходил под его пользователем - он может принять какие-либо меры. p.s. система его пропускает дальше и генерирует новую сессию с его IP.