|
|
|
| Помогите решить задачу!
Есть пароль зашифрованный двойным md5:
d2753430857961661550d9a5dcfc5d46
|
Подсказка: пароль из 5 символов и включает в себя английские буквы, цифры и символ тире или нижнее подчёркивание. | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 16:55)
| | [поправлено модратором] | |
|
|
|
|
|
|
|
для: neadekvat
(25.12.2010 в 17:23)
| | Да, знаком! Я не знаю как сделать перебор символов.. Я написал скрипт для перебора, но условие, что пароль чисто из цифр, а если еще и буквы и символы.. хз.. | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 17:38)
| | Записываете в строку весь возможный алфавит и перебераете себе на здоровье. | |
|
|
|
|
|
|
|
для: neadekvat
(25.12.2010 в 17:43)
| | Вот как я написал:
$pass = "пароль в двойном md5";
$lom = 0;
do
{
$lom = $lom + 1;
$md5 = md5(md5($lom));
}
while($md5 != $pass);
echo $lom;
Что добавить или изменить для перебора символов и букв? | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 17:50)
| | Все изменить.
По условию в слове 5 символов.
То есть вы прогоняете цикл 99999 лишних раз как минимум.
Вообще, задача кажется немного странной. Как минимум.
К тому же, буквы могут быть и верхнего, и нижнего регистра или он таки определен, например, как нижний? | |
|
|
|
|
|
|
|
для: neadekvat
(25.12.2010 в 17:53)
| | Дело в том, что не известно какой будет другой пароль.. Этот скрипт я хочу написать для своего сайта.. А этот пароль, который я дал состоит из нижнего регистра. | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 17:56)
| | То есть вы собираетесь подбирать чужие пароли? | |
|
|
|
|
|
|
|
для: neadekvat
(25.12.2010 в 17:58)
| | Да, но не для себя, а для того, если пользователь забыл пароль и не хочет вводить новый, то он нажмёт выслать на почту текущий пароль и запустится скрипт расшифровки.. | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 18:01)
| | Во-первых, вы не сможете составить весь алфавит вомзожных символов, т.к. пользователь может ввести что угодно, ведь...
...Во-вторых, вы не имеете права ограничивать пользователя в выборе символов для пароля.
В-третьих, на расшифровку может уйти такая уйма времени, что пользователь проклянет тот момент, когда нажал ссылку "восстановить пароль".
Подытожив, предлагаю отказаться от этой глупой затеи и поступить следующим образом:
пользователю нажимает "восстановить пароль", вводит свой email, на его приходит некий случайный код и ссылка (в ссылке может быть заключен этот код, но на всякий случай следует сделать возможность ввести его в поле на сайте) на страницу, на которой пользователь сам вводит свой новый пароль.
P.S. Захешированная строка - 24-di? | |
|
|
|
|
|
|
|
для: neadekvat
(25.12.2010 в 18:08)
| | Полностью с вами согласен! Да, верно: 24-di, но всё-же.. хотя бы для себя его можно использовать.. хотя.. если пользователю нужен будет старый пароль любыми способами, то он будет готов и час ждать (если укажет примерное количество символов).. | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 18:24)
| | Еще и количество символов попросите? Нет, извините, извините. Я лично не буду помогать конкретно с затеей подбора хэша пароля. | |
|
|
|
|
|
|
|
для: neadekvat
(25.12.2010 в 18:29)
| | Будет предложено пользователю ввести примерное количество символов, поверьте, мне пароли пользователей совершенно не нужны, ведь я могу получить полный доступ к их анкете через панель управления сайтом, которую я написал специально для таких случаев!! Но если вы не хотите помочь, то буду дальше искать ответа.. Спасибо за потраченное на меня время! | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 18:36)
| | *затеей подбора пароля по хэшу - оговорился.
Я не единственный участник форума. Возможно, кто-то посчитает это здравой идеей, и она не будет противоречить его принципам, и вам подскажут (или дадут готовый код) решение.
Но я вас призываю еще раз подумать.
А если пользователь ошибется? А если скажет, "где-то между 5-ю и 8-ю символами, и там, кажется, было что-то из спецсимволов". А если у вас обычный хостинг? Неужели игра стоит свеч? | |
|
|
|
|
|
|
|
для: neadekvat
(25.12.2010 в 18:38)
| | Сайт лежит на моем компьютере до полной готовности и в дальнейшем будет перенесён на купленный мной сервер.. Возможно и в правду стоит отказаться от данной затеи.. но для своего развития всё-же пригодится.. Спасибо! | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 18:24)
| | если пользователю нужен будет старый пароль любыми способами, то он будет готов и час ждать
нахера ему старый пароль если он его не помнит?
воду вы мутите молодой человек
такие скрипты пишутся ночью под одеялом с фонариком | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 18:01)
| | Если пользователь забыл пароль, то как он докажет сайту, что является владельцем пароля?
Если сайт будет иметь такой функционал, зачем вообще использовать хеши?
Если сайт держит пароли открытыми, или позволяет расшифровывать их - откуда возьмется доверие к такому сайту?
Я знаю единственное разумное применение этого скрипта - Вы его не назвали. | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2010 в 19:36)
| | Вы что, считаете, что я собираюсь давать доступ к данному скрипту по любому требованию?? Во первых будет проверка e-mail и ответа на вопрос (который пользователь указал при регистрации) и уже потом будет предоставлен выбор: либо ввести новый пароль, либо попытаться расшифровать старый (также будет предупреждение о том, что расшифровка может длится от нескольких секунд, до нескольких часов).. | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 19:48)
| | >Вы что, считаете, что я собираюсь давать доступ к данному скрипту по любому требованию??
Я считаю, что требование "узнать забытый пароль" нарушает саму концепцию паролей.
И потакать ему - абсурдно. | |
|
|
|
|
 6.2 Кб |
|
|
для: Trianon
(25.12.2010 в 19:57)
| |
<?php
include 'm.php';
// Массив букв и цифр
$ex = array (1,2,3,'a','b','c');
foreach ($ex as $v)
{
if ($v == '') continue;
$new[] = intval($v);
}
$all = count($new);
$combinatorics = new Math_Combinatorics;
foreach($combinatorics->permutations($new, $all) as $k=>$p)
{
echo join(' ', $p).'\r\n';
}
?>
// Так можно получить разные варианты
// m.php прилогаю
|
| |
|
|
|
|
|
|
|
для: LEM
(25.12.2010 в 21:01)
| | Что это? | |
|
|
|
|
|
|
|
для: neadekvat
(25.12.2010 в 21:05)
| | вот автор пишет:
Да, знаком! Я не знаю как сделать перебор символов.. Я написал скрипт для перебора, но условие, что пароль чисто из цифр, а если еще и буквы и символы.. хз..
|
Я привел пример... | |
|
|
|
|
|
|
|
для: LEM
(25.12.2010 в 21:10)
| | И что ваш пример будет перебирать и что на выходе выдаст? | |
|
|
|
|
|
|
|
для: LEM
(25.12.2010 в 21:10)
| | я такого не писал. | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2010 в 19:57)
| | >Я считаю, что требование "узнать забытый пароль" нарушает саму концепцию паролей.
>И потакать ему - абсурдно.
На все 100% верное утверждение!!! | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 18:01)
| | Время выполнение данной задачи, прямо пропорционально её идиотизму!
Куда проще отправить пользователю на ящик ссылку для изменения пароля и создать его с нуля.. | |
|
|
|
|
|
|
|
для: Dimon-zmey
(25.12.2010 в 16:55)
| | 62 + 2 = 64
64 * 64 * 64 * 64 * 64 = 1 073 741 824 вариантов паролей, а где в паролях тире и подчеркивание используется?
тебе нужно пять вложенных циклов
Пример с тремя(238 328 вариантов) вот:
<?php
$chars = "1234567890qwertyuiopasdfghjklzxcvbn mQWERTYUIOPASDFGHJKLZXCVBNM";
$chars = str_split($chars);
$c = count($chars);
for ($i = 0; $i < $c; ++$i) {
for ($k = 0; $k < $c; ++$k) {
for ($l = 0; $l < $c; ++$l) {
$array[] = $chars[$i].$chars[$k].$chars[$l];
}
}
}
print_r($array);
|
Учитывая что в году 31 536 000 сек времени у тебя на взлом уйдёт даже не знаю | |
|
|
|
|
|
|
|
для: Красная_шляпа
(25.12.2010 в 21:28)
| |
$chars = str_split($chars);
$c = count($chars);
|
Это лишнее.
$c = strlen($chars); // или mb_
|
| |
|
|
|
|
|
|
|
для: Красная_шляпа
(25.12.2010 в 21:28)
| | Вот мое решение одной очень давней задачи.
Там можно и скорость оценить. | |
|
|
|
|
|
|
|
для: Trianon
(25.12.2010 в 21:38)
| | Вот это скорость!
Мне, кстати, первым делом в голову тоже вложенные цикли пришли.
Сколько вам понадобилось времени для второго варианта решения (показанного по ссылке)? | |
|
|
|
|
|
|
|
для: neadekvat
(25.12.2010 в 21:44)
| | Понадобилось времени на подбор?
Я и не проверял, это ж от процессора зависит.
А надо было попытаться? | |
|
|
|
|
|
|
|
для: Trianon
(26.12.2010 в 00:11)
| | Времени на приход к такому алгоритму | |
|
|
|
|
|
|
|
для: neadekvat
(26.12.2010 в 00:23)
| | А я помню? Это ж почти 4 года назад было - даж обращения к символам строки извратные стоят.
Часа 2-4 наверное. | |
|
|
|
|
|
|
|
для: Trianon
(26.12.2010 в 01:02)
| | Но идея использовать ключи массива в таком качестве - это открытие для меня. Я бы ковырялся с функциями array_*, а так сколько ресурсов экономится. | |
|
|
|
|
|
|
|
для: neadekvat
(26.12.2010 в 12:13)
| | пожалуй, мысль, что средствами быстрого поиска по хешу ключа, встроенными в ядро языка, непременно следует воспользоваться, была единственной к началу процесса поиска решения. :)))
Основное время было потрачено на рекурсию, позволяющую перебирать пароли по мере роста их длины. | |
|
|
|