Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15

Discussione: Uso di Bcrypt

  1. #1
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    8

    Uso di Bcrypt

    Ciao a tutti. Sto facendo un form di registrazione per il mio sito. E' quasi tutto pronto, ma non so come si criptano le password. Guardando nei vari forum, mi è sembrato di capire che md5 e sha2
    sono ormai obsoleti come sicurezza e si parla di bcrypt, solo che non ho trovato da nessuna parte la sintassi da usare per criptare le pass degli utenti. Qualcuno può darmi delucidazioni in merito? Grazie a chi risponderà

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    8
    Nessuno? so che per criptare in md5 si fa ad esempio
    Codice PHP:
    $Password_criptata md5($Password_in_chiaro
    . E fin qui tutto ok. Non ci riesco invece ne con SHA256 ne con BCRYPT. Il codice che ho provato per sha256 è questo
    Codice PHP:
    $Password_criptata sha256($Password_in_chiaro
    e mi restituisce il seguente errore: Call to undefined function SHA256(). Dove sbaglio? PHP nativamente supporta solo MD5? se è così come posso implementare SHA256 o Bcrypt?

  3. #3
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    hai letto questo?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    8
    Grazie per la risposta purtroppo, anche copiando il codice, esce questo errore: Catchable fatal error: Object of class Bcrypt could not be converted to string qualcuno ha idea di dove sto sbagliando? in alternativa conoscete un compilatore per codice php?

  5. #5
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    a me così funziona
    Codice PHP:
    <?php

    class Bcrypt {
      private 
    $rounds;
      public function 
    __construct($rounds 12) {
        if(
    CRYPT_BLOWFISH != 1) {
          throw new 
    Exception("bcrypt not supported in this installation. See [url]http://php.net/crypt[/url]");
        }

        
    $this->rounds $rounds;
      }

      public function 
    hash($input) {
        
    $hash crypt($input$this->getSalt());

        if(
    strlen($hash) > 13)
          return 
    $hash;

        return 
    false;
      }

      public function 
    verify($input$existingHash) {
        
    $hash crypt($input$existingHash);

        return 
    $hash === $existingHash;
      }

      private function 
    getSalt() {
        
    $salt sprintf('$2a$%02d$'$this->rounds);

        
    $bytes $this->getRandomBytes(16);

        
    $salt .= $this->encodeBytes($bytes);

        return 
    $salt;
      }

      private 
    $randomState;
      private function 
    getRandomBytes($count) {
        
    $bytes '';

        if(
    function_exists('openssl_random_pseudo_bytes') &&
            (
    strtoupper(substr(PHP_OS03)) !== 'WIN')) { // OpenSSL slow on Win
          
    $bytes openssl_random_pseudo_bytes($count);
        }

        if(
    $bytes === '' && is_readable('/dev/urandom') &&
           (
    $hRand = @fopen('/dev/urandom''rb')) !== FALSE) {
          
    $bytes fread($hRand$count);
          
    fclose($hRand);
        }

        if(
    strlen($bytes) < $count) {
          
    $bytes '';

          if(
    $this->randomState === null) {
            
    $this->randomState microtime();
            if(
    function_exists('getmypid')) {
              
    $this->randomState .= getmypid();
            }
          }

          for(
    $i 0$i $count$i += 16) {
            
    $this->randomState md5(microtime() . $this->randomState);

            if (
    PHP_VERSION >= '5') {
              
    $bytes .= md5($this->randomStatetrue);
            } else {
              
    $bytes .= pack('H*'md5($this->randomState));
            }
          }

          
    $bytes substr($bytes0$count);
        }

        return 
    $bytes;
      }

      private function 
    encodeBytes($input) {
        
    // The following is code from the PHP Password Hashing Framework
        
    $itoa64 './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';

        
    $output '';
        
    $i 0;
        do {
          
    $c1 ord($input[$i++]);
          
    $output .= $itoa64[$c1 >> 2];
          
    $c1 = ($c1 0x03) << 4;
          if (
    $i >= 16) {
            
    $output .= $itoa64[$c1];
            break;
          }

          
    $c2 ord($input[$i++]);
          
    $c1 |= $c2 >> 4;
          
    $output .= $itoa64[$c1];
          
    $c1 = ($c2 0x0f) << 2;

          
    $c2 ord($input[$i++]);
          
    $c1 |= $c2 >> 6;
          
    $output .= $itoa64[$c1];
          
    $output .= $itoa64[$c2 0x3f];
        } while (
    1);

        return 
    $output;
      }
    }

    $bcrypt = new Bcrypt(15);

    $hash $bcrypt->hash('password');
    $isGood $bcrypt->verify('password'$hash);

    echo 
    "$hash \n $isGood";

    ?>

  6. #6
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    8
    Ok, a questo punto devo dire che non ci capisco niente io. Il codice, dove la prende la password che metto? e dove me la restituisce codificata?
    Cioè se io,ad esempio, chiamo il campo della password "campo_passwd " dove lo devo sostituire nel codice?
    io pensavo alla riga 113: cioè da cosi'
    Codice PHP:
    $hash $bcrypt->hash('[SIZE=3]password[/SIZE]'); 
    farla diventare così:
    Codice PHP:
    $hash $bcrypt->hash('[SIZE=3]campo_passwd[/SIZE]'); 
    è giusto? e poi dove me la restituisce crittografata?
    scusa ma proprio non mi riesce di orientarmi. Potresti per favore editare il messaggio di prima indicandomi il punto (o i punti) dove prende la password dal form e dove la restituisce crittografata?

  7. #7
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    tutto quello che è presente prima del codice qua sotto è la classe con tutti i suoi metodi e va messa anche in un file a parte che va poi incluso nel tuo script

    per usare la classe devi scrivere solo queste linee nel tuo codice
    Codice PHP:

    $bcrypt 
    = new Bcrypt(15); //inizializzi la classe

    $hash $bcrypt->hash('password');  //qui dici alla classe che deve restituirti l'hash della stringa "password" (che proverrà, ad esempio dal tuo form)
    $isGood $bcrypt->verify('password'$hash); //questo codice lo usi per verificare che la stringa "password" che ti è stata passata dal form sia corretta (restituisce 1 se ok)

    echo "$hash 
     
    $isGood"//questo lo avevo messo per farti vedere la password criptata e l'esito della verifica 

  8. #8
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    8
    Grazie mille Clasku. Adesso devo capire come fare il login e sono apposto

  9. #9
    Utente di HTML.it
    Registrato dal
    May 2013
    Messaggi
    8
    Non è che mi puoi aiutare anche nel login? perchè, le guide che trovo, o non funzionano oppure sono io che non riesco ad implementarle. Sto cercando di fare lo script di autenticazione con email e password, ma anche se faccio le prove con una password salvata in chiaro, non ho esito positivo
    Ti ringrazio ancora per l' aiuto precedente, mi sono appena avvicinato a questo linguaggio e ho parecchie lacune

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    prova a postare un po' di codice e ci si da un'occhiata

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.