<?php

/*
* Password generation class by Thomas Smit, written mid-2006 and rewritten 16/11/06
*/

class passgen
{

    private 
$length;    // @var int $length - length of password
    
private $chars;     // @var str $chars - characters to use
    
private $pass;      // @var str $pass - generated password

    /*
    * passgen::__construct() - set class variables and trigger generation method
    * @param int $length - desired length of password
    * @param str $chars - characters used (defaults to 0-9a-z)
    * @return void
    */

    
public function __construct($length$chars '0 1 2 3 4 5 6 7 8 9 a b c d e f g h i j k l m n o p q r s t u v w x y z')
    {
        
$this->chars $chars;
        
$this->length $length;
        
$this->createpass();
    }

    
/*
    * passgen::createpass() - generate the random string
    * @return void
    */

    
private function createpass()
    {
        
$chararray explode(' '$this->chars);
        
$total count($chararray);

        for(
$i 0$i $this->length$i++)
            
$str .= $chararray[rand(0$total)];

        
$this->pass $str;
    }

    
/*
    * passgen::showpass() - display generated password
    * @return str
    */

    
public function showpass()
    {
        return 
$this->pass;
    }

    
/*
    * passgen::createhash() - hash the password
    * @param str $type - desired hashing method (MD5/SHA1/SHA256)
    * @return str
    */

    
public function createhash($type)
    {
        switch(
$type)
        {
            case 
'MD5'    : return md5($this->pass);
                            break;
            case 
'SHA1'   : return sha1($this->pass);
                            break;
            case 
'SHA256' : return bin2hex(mhash(MHASH_SHA256$this->pass));
                            break;
        }
    }

}

?>