[Web-извращенцам] хеширование

Discussion in 'PHP' started by .:EnoT:., 29 Feb 2008.

  1. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    В общем темка довольно таки интересная.
    Решил в своём движке сделать такой метод хеширования пасов, чтобы даже самый умный ][, имеющий гигабайты словарей до старости брутил хеш))
    Предполагается плюс ко всему солько. да и собственно у кого какие мысли по выделению соли? тоже интерсно было бы узнать)

    В общем кто на что способен, выкладывайте :)
    Маленький пример:

    PHP:
    function super_hash($pass)
    {
        
    $pass hash_hmac('md5'md5(base64_encode(strrev($pass))), 'bugaga');
        return 
    $pass;
    }
    echo 
    super_hash(12345);
     
  2. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    Тема интересна, если не использовать стандартные алгоритмы типа md5 и base64
     
  3. Hawkins

    Hawkins Elder - Старейшина

    Joined:
    24 Jan 2007
    Messages:
    60
    Likes Received:
    31
    Reputations:
    5
    $pwd=substr(sha1(md5($password)), 0, 10);
    анбрутабл, никаких солей, места в бд занимает немного =)
     
  4. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    Бред....
    Способов куча
     
  5. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    дргого ответа от тебя ожидать было бы глупо)
    раз куча способов - выкладывай, буду только рад :)
     
  6. Macro

    Macro Elder - Старейшина

    Joined:
    11 Nov 2006
    Messages:
    552
    Likes Received:
    298
    Reputations:
    207
    PHP:
    <? 
    function 
    macrohash($string

    $b=bin2hex($string); 
    $str ''
    $c=''


    for(
    $i=0$i<=strlen($b)-2$i+=2

    $sm=0
    for(
    $j=0$j<=strlen($b-2); $j+=2

    $sm=$sm+hexdec(substr($b,$j,2)); 

    $asdf2=explode(".",$sm/3.1415927); 
    $summab=$asdf2[1];
    $x=hexdec(substr($b,$i,2)); 
    $c.=dechex($x+intval(strlen($string)*$x)+$summab/$x); 



    if (
    strlen($c)<=32)  

    $d=''

    for(
    $i=0strlen($d)<=32$i+=2
    {
    $sm=0
    for(
    $j=0$j<=strlen($b-2); $j+=2

    $sm=$sm+hexdec(substr($b,$j,2)); 

    $asdf2=explode(".",$sm/3.1415927); 
    $summab=$asdf2[1];
    $d.=dechex(intval((hexdec(substr($c,$i,2))+strlen($d))*$summab*$x)); 

    $str=substr($d,strlen($d)-32,32); 


    elseif(
    strlen($c)>32

    $w=''
    $c=substr($c,strlen($c)-5); 
    for(
    $i=0strlen($w)<=32$i+=2
    {
    $sm=0
    for(
    $j=0$j<=strlen($b-2); $j+=2

    $sm=$sm+hexdec(substr($b,$j,2)); 

    $asdf2=explode(".",$sm/3.1415927); 
    $summab=$asdf2[1];
    $w.=dechex(intval((hexdec(substr($c,$i,2))+strlen($w))*$summab*$x)); 

    $str=substr($w,0,32); 

    return 
    $str

    ?>
    Моя функция хэширования без использования стандартных функций
     
    5 people like this.
  7. Noiro

    Noiro Banned

    Joined:
    1 Jan 2008
    Messages:
    47
    Likes Received:
    16
    Reputations:
    5
    Обычно использую просто двойной sha1 с салтом и "ключем", например так - ключ хранится в исходниках а не в базе, в роли салта - юзернейм :
    PHP:
    $key "SomeReeeeeeeeealllyfriggginloooooooongstrrrrrrrrrrrrrinnnnnnng123432432432";
    $hash sha1($key.sha1($pass).$username)
    А вообще соглашусь с Isis, способов безконечно много даже используя комбинации классических алгоритмов хеширования. Пойдет любой, главное чтобы использовались салты и алгоритм небыл включен в известные брутеры.
     
  8. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    Бред, почему не брутабельно?

    PHP:
    <?php
    $hash 
    '';
    $file file('slovar.txt');
    for(
    $i=0;$i<count($file);$i++)
    {
    if(
    $hash == substr(sha1(md5(trim($file[$i]))), 010))
    {
    echo(
    'pass: '.$file[$i]);
    break;
    }
    }
    ?>
    Да кстати алгоритм очень тупой, я уже раньше писал что в теории обрубание хеша напротив только увеличивает колизию, т.к. одному такому урезаному хешу будут соответсвовать n-ое число не урезанных хешей, т.е. к примеру, если для некоторой функции хеш от 1 = aaabb, а от 111 = aaacc, то получится что урезаному хешу aaa будет соответствовать и 1 и 111.

    Или говоря про небрутабельность ты имелл ввиду скорость? Если да, то не думаю что будет медлнее чем тот же мд5 юникс.
     
    #8 Grey, 29 Feb 2008
    Last edited: 29 Feb 2008
    1 person likes this.
  9. $n@ke

    $n@ke Elder - Старейшина

    Joined:
    18 Sep 2006
    Messages:
    696
    Likes Received:
    404
    Reputations:
    134
    сгласен с тем что это бессмысленно.

    на данный момент существует порядком различных типов хеширования.тот же двойной sha1 с салтом при норм.пароле - будешь расшифровывать пол жизни.
     
  10. darky

    darky ♠ ♦ ♣ ♥

    Joined:
    18 May 2006
    Messages:
    1,773
    Likes Received:
    825
    Reputations:
    1,418

    с тех пор как паспро стал модульным, это не актуально
     
    1 person likes this.
  11. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,193
    Reputations:
    252
    PHP:
    <?php
    $key 
    = (CRYPT_STD_DES == 1) ? substr(sha1('xyu'.md5('pizda'.base64_encode('siski'.strrev($_COOKIE['ip'].crypt('PASSWORD''sugar')).'xek').'gay').'crypt'), 313)    : '';
    echo 
    $key;
    ?>
    Вот такие вот пароленги у меня храняцо + если скрипт закодирован не скажу как..
    Шансов 0
     
  12. Noiro

    Noiro Banned

    Joined:
    1 Jan 2008
    Messages:
    47
    Likes Received:
    16
    Reputations:
    5
    Гммм, действительно, это я не учел. Тем более, если злоумышленник получает доступ к нешифрованным исходникам, то dll'ку с используемым алгоритмом добавить проблемы не составит.
    Как вариант, использовать ресурсоёмкие алгоритмы по принципу MD5(UNIX), последовательно хешируя пароль несколько тысяч раз.
     
  13. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    Дурак? Ты не думал о том что в веб-приложениях скорость выполнения сценария критична? Кому нужен двиг в котором что бы просто залогинится нужно ждать минут 10, а если пользователей одновременно 100,200,1000? Не думаю что каждый сервак справится с такой нагрузкой, если вообще справится.

    Алгоритм должен быть оптимальным во всех отношениях.
     
  14. guest3297

    guest3297 Banned

    Joined:
    27 Jun 2006
    Messages:
    1,246
    Likes Received:
    639
    Reputations:
    817
    Умные хакеры всегда, смотрят исходники что как зашифровано и закодированно, так что вы всосете!
     
  15. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    тема херня, способов масса, и зная алгоритм брутиться все
     
    #15 nc.STRIEM, 29 Feb 2008
    Last edited: 29 Feb 2008
  16. Noiro

    Noiro Banned

    Joined:
    1 Jan 2008
    Messages:
    47
    Likes Received:
    16
    Reputations:
    5
    Какие простите 10 минут ?
    Извольте проверять ваши предположения перед тем как называть других дураками.
    PHP:
    cat md510ktest.php
    <?php
    $p 
    $argv[1];
    for(
    $i=0;$i<10000;$i++)
    {
            
    $p md5($p);
    }
    echo 
    $p;
    ?>
    time php md510ktest.php testtt4nuiehgiuheirhieuhrfiuheirfhierfhieuhrfihweifhriewhrfuhewoirfhiuh1
    d40cc7fa978e4ee2da5223d99e1bbaaf
    real    0m0.109s
    user    0m0.080s
    sys     0m0.020s
    time php md510ktest.php testtt4nuiehgiuheirhieuhrfiuheirfhierfhieuhrfihweifhriewhrfuhewoirfhiuh2
    0c03a4f78c217722f8cde1e94fbdc5e8
    real    0m0.128s
    user    0m0.100s
    sys     0m0.020s
    time php md510ktest.php testtt4nuiehgiuheirhieuhrfiuheirfhierfhieuhrfihweifhriewhrfuhewoirfhiuh3
    6974816458cb1f75e6cdf38989748c22
    real    0m0.104s
    user    0m0.070s
    sys     0m0.020s
    time php md510ktest.php testtt4nuiehgiuheirhieuhrfiuheirfhierfhieuhrfihweifhriewhrfuhewoirfhiuh4
    6c37418683998e2ec8cc2307eed57ad7
    real    0m0.110s
    user    0m0.090s
    sys     0m0.010s
    time php md510ktest.php testtt4nuiehgiuheirhieuhrfiuheirfhierfhieuhrfihweifhriewhrfuhewoirfhiuh5
    648fe28643dcfbafc3781dc81ae26f79
    real    0m0.138s
    user    0m0.080s
    sys     0m0.040s
    Далее.
    Проверка хеша - операция сравнительно редкая, по сути используемая только в первичной аутентификации и регистрации.
    Потратить на неё ресурсов в 100-10000 раз больше чем обычно - ИМХО вполне допустимо.
     
  17. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    Мд5 Юникс, это не тоже самое что мд5() в пхп, скорость хеширования отличается существенно. Ты написал про MD5 UNIX, а на примере показал мд5(), ты попробуй прогони MD5 UNIX раз этак тысячу, а потом уже говори что либо.
     
    #17 Grey, 29 Feb 2008
    Last edited: 29 Feb 2008
  18. Noiro

    Noiro Banned

    Joined:
    1 Jan 2008
    Messages:
    47
    Likes Received:
    16
    Reputations:
    5
    Я НЕ писал о последовательном применении MD5(UNIX), я писал о применении алгоритмов, использующих идеи MD5(UNIX). Разница надеюсь очевидна ?
    MD5(UNIX) от обычного md5 в часности и отличается циклическим применением последнего в первом несколько тысяч раз.
     
  19. Grey

    Grey Banned

    Joined:
    10 Jun 2006
    Messages:
    1,047
    Likes Received:
    1,315
    Reputations:
    1,159
    Ты всеравно не думаешь о последствиях, если пароль будет хешироваться тысячу раз, то сервак намного легче задосить (написать скрипт который будет постоянно кидать пасс не сложно, а вот из-за такого хеширования нагрузка будет более существенной), т.к. такую направленную нагрузку он не выдержит.
     
  20. nc.STRIEM

    nc.STRIEM Members of Antichat

    Joined:
    5 Apr 2006
    Messages:
    1,036
    Likes Received:
    347
    Reputations:
    292
    при увеличение количества операция взятия хеша, число возможных коллизий увеличиваеться в геометрической прогрессии
     
    1 person likes this.