Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> md5 i sha1 dają różne wyniki
Apo
post
Post #1





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


Witam
Pisze bota w php do kanałów irc. Chciałem dodać taką funkcję że:
admin bota dodaje op'ów do pliku tekstowego (nick, hasło). Następnie jeśli wejdzie user na kanal to moze sie zalogowac (jesli jego nick istnieje w pliku i haslo sie zgadza) i uzyskac dostep do komend bota. Zrobilem hashowanie hasel md5(sha1(...)), ale nie wiem co sie dzieje że hasła za każdym razem mają inna postać i w efekcie nie mozna się zalogować. Sprawdzałem czy zmienne (wszystkie) zawierają przed hashowaniem prawidłowe dane i wszystko jest ok. Ale w jednej linijce wszystko mi sie zmienia i nie umie tego poprawić (IMG:http://forum.php.pl/style_emoticons/default/sad.gif) Oto część kodu:

  1. <?php
  2. if(preg_match('#^\.add op (.*\S){1,30} (.*)#', $this->message, $this->tmp))
  3. // jeśli privmsg ma postac .add op (nick) (haslo) to robi sie akcja. Zmienna $message przechowuje tresc privmsg
  4. {
  5.       if($this->save_op( $this->tmp[1], $this->tmp[2] ))
  6.       $this->privmsg('Dodano uzytkownika do listy');
  7.       else
  8.       $this->privmsg('Nie dodano uzytkownika do listy');
  9. }
  10.  
  11. // metoda zapisuje op'a do pliku jesli nie istnieje w bazie.
  12. private function save_op( $what, $pass )
  13.   {
  14.   if(!file_exists($this->config['op_file']) || $this->is_op_exists( $what )) return false;
  15.     else
  16.     {
  17.     $dane = unserialize(file_get_contents($this->config['op_file']));
  18.     $dane[] = array('nick' => $what, 'pass' => $this->hash($pass));
  19.     file_put_contents($this->config['op_file'], serialize($dane));
  20.     return true;
  21.     }
  22.   }
  23.  
  24. // regexp ktore rozpoznaje czy user sie chce logowac:
  25. elseif(preg_match('#^\.log in (.+)#', $this->message))
  26. { // czyli postac .log in tajnehaslo
  27.  $this->log_in();
  28.  }
  29.  
  30. // sedno całego problemu metoda logowania
  31. private function log_in()
  32.   {
  33.   if(!$this->is_op_exists()) return false;
  34.    else
  35.    {
  36.    $dane = $this->read_op(); // odczytuje plik i unserializuje zawartosc
  37.    foreach($dane as $numbers => $user)
  38.      {
  39.      if($user['nick'] == $this->from) // zmienna $this->from zawiera autora privmsg
  40.        {
  41.        if($user['pass'] == $this->hash(substr($this->message, 8))) // tu sie dzieja dziwne rzeczy z haslem ;/
  42.          {
  43.          $this->access[] = $this->from; // dodanie usera do zalogowanych
  44.          $this->privmsg('Zostales zalogowany');
  45.          return true;
  46.          }
  47.           else
  48.           {
  49.           $this->privmsg('Nie zostales zalogowany');
  50.           return false;
  51.           }
  52.        }
  53.      }
  54.    }
  55.   }
  56.  
  57. // metoda hashujaca
  58. private function hash( $pass )
  59.   {
  60.   return md5(sha1($pass));
  61.   }
  62.  
  63. ?>


Z gory blogosławieństwo za pomoc (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)

Ten post edytował Apo 22.03.2006, 15:10:15
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Apo
post
Post #2





Grupa: Zarejestrowani
Postów: 426
Pomógł: 1
Dołączył: 2.10.2005

Ostrzeżenie: (0%)
-----


Dobra to ja dam cały kod bedzie lepiej.
www.void.prv.pl/bot.zip
Spakowalem poniewaz jest tam kilka plikow i 1 folder. Wystarczy plik config.php ustawic oraz w class.php kanal wpisac. Komendy sa dostepne poleceniem .help (trzeba byc adminem lub byc na liscie). Następnie należy dodac op'a do pliku czyli
.add op nick haslo
potem powinno przyjsc potwierdzenie. Nastepnie zmieniamy nick na ten podany przedchwilą i sie probujemy zalogowac:
.log in haslo
No i sie nie da. Problem pewnie lezy w metodzie log_in().
Wszystkie kemendy sa dostepne poleceniem .help

Ten post edytował Apo 22.03.2006, 17:41:06
Go to the top of the page
+Quote Post

Posty w temacie


Closed TopicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 26.12.2025 - 17:46