Нужна помощь c шифрованием паролей

Тема в разделе "PHP", создана пользователем bucha2004, 7 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. bucha2004

    bucha2004

    Регистр.:
    9 фев 2007
    Сообщения:
    300
    Симпатии:
    76
    Есть функция шифрования расшифровки пароля из базы SQl
    Кто то сможет помочь, изменить ее так, чтоб пароль расшифровывался обычным md5 ?
    <?
    require_once($_SERVER["DOCUMENT_ROOT"]."/_s-p/_function/blowfish_class.php");
    function code_password($password) {
    while (strlen($password) < 12) {
    $password .= "-";
    }
    $key = md5"V7qM91t0mtlkcI1UD");
    $res = base64_encode(encrypt($password, $key));
    return $res;
    }
    function encode_password($password) {
    $key = md5("V7qM91t0mtlkcI1UD");
    $res = decrypt(base64_decode($password), $key);
    $res = trim(str_replace("-", " ", $res));
    return $res;
    }
    function encrypt($data, $secret) {
    $cipher = new blowfish;
    $encrypt = '';
    for ($i = 0; $i < strlen($data); $i+=8) {
    $block = substr($data, $i, 8);
    if (strlen($block) < 8) {
    $block = full_str_pad($block, 8, "", 1);
    }
    $encrypt .= $cipher->encryptBlock($block, $secret);
    }
    return $encrypt;
    }
    function decrypt($data, $secret) {
    $cipher = new blowfish;
    $decrypt = '';
    for ($i = 0; $i < strlen($data); $i+=8) {
    $decrypt .= $cipher->decryptBlock(substr($data, $i, 8), $secret);
    }
    return trim($decrypt);
    }
    function full_str_pad($input, $pad_length, $pad_string = '', $pad_type = 0) {
    $str = '';
    $length = $pad_length - strlen($input);
    if ($length > 0) { // str_repeat doesn't like negatives
    if ($pad_type == STR_PAD_RIGHT) { // STR_PAD_RIGHT == 1
    $str = $input.str_repeat($pad_string, $length);
    } elseif ($pad_type == STR_PAD_BOTH) { // STR_PAD_BOTH == 2
    $str = str_repeat($pad_string, floor($length/2));
    $str .= $input;
    $str .= str_repeat($pad_string, ceil($length/2));
    } else { // defaults to STR_PAD_LEFT == 0
    $str = str_repeat($pad_string, $length).$input;
    }
    } else { // if $length is negative or zero we don't need to do anything
    $str = $input;
    }
    return $str;
    }
    ?>
     
  2. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    md5 - необратимое шифрование, а значит оно не расшифровывается ;)
     
  3. bucha2004

    bucha2004

    Регистр.:
    9 фев 2007
    Сообщения:
    300
    Симпатии:
    76
    function encode_password($password) {
    $key = md5("V7qM91t0mtlkcI1UD");
    $res = decrypt(base64_decode($password), $key);
    $res = trim(str_replace("-", " ", $res));
    return $res;


    В базе я вижу пароль, с виду он зашифрован md5, подставляя туда обычный (admin) 232f297a57a5a743894a0e4a801fc3 то он не подходит.

    мне хотелось бы привести эту функцию к стандартному md5, без кеев и base64

    Кто то сможет помочь мне это сделать?
     
  4. alseman

    alseman

    Регистр.:
    21 май 2008
    Сообщения:
    190
    Симпатии:
    25
  5. antidote

    antidote

    Регистр.:
    21 янв 2008
    Сообщения:
    167
    Симпатии:
    42
    А просто в функциях code_password и encode_password убрать base64_encode и base64_decode нельзя? новые пароли уже будут писаться без base64, а вот старые придется расшифровать старой функцией и зашифровать новой
     
    bucha2004 нравится это.
  6. Freeborn

    Freeborn Постоялец

    Регистр.:
    31 окт 2008
    Сообщения:
    62
    Симпатии:
    21
    PHP:
    function encode_password($password) {
    return 
    md5($password);
    ?

    Добавлено через 3 минуты
    Они не расшифровывают - md5. Они ищут твой хеш в своей базе.
     
    bucha2004 нравится это.
  7. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    иди учи матчасть сынок. эти сервиси подбирают md5 хэш а не расшифровывают его
     
  8. bucha2004

    bucha2004

    Регистр.:
    9 фев 2007
    Сообщения:
    300
    Симпатии:
    76
    На самом деле есть несколько видов сервисов...

    1. Ищет по базе хешей
    2. Расшифровывает

    Вы вдвоем правы.


    Всем спасибо за помощь. Проблема решена
     
  9. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    да нет такого понятия как расшифровка MD5. Эти сервиси либо прогоняют по своей базе хешей либо подбирают хеш(что мало вероятно)
     
  10. bucha2004

    bucha2004

    Регистр.:
    9 фев 2007
    Сообщения:
    300
    Симпатии:
    76
    Вы сами говорите - "либо подбирают"

    Подбор это не метод?
     
Статус темы:
Закрыта.