Dsao_Hash Klassenreferenz

Repräsentiert einen Hash. Mehr ...

Klassendiagramm für Dsao_Hash:

Dsao_Hash_Password Dsao_Hash_User

Aufstellung aller Elemente

Öffentliche Methoden

 __toString ()
 Wandelt Hash in String um.
 compareTo (Dsao_Hash $hash)
 Hash-Vergleich.
 getAlgorithm ()
 Gibt dem verwendeten Algorithmus zurück.
 getHash ($length=0)
 Gibt den aktuellen Hash, gekürzt oder ungekürzt, zurück.
 getLength ($trueLength=false)
 Länge des Hashes, bzw.
 isReadOnly ($throw=false)
 Gibt zurück, ob Objekt schreibgeschützt ist.
 setAlgorithm ($algorithm)
 Festsetzung des Verschluesselungsalgorithmus.
 setHash ($hash=null, $fromText=false)
 Legt den Hash fest.
 setLength ($length=0)
 Setzt Länge, auf die der Hash bei der Rückgabe gekürzt werden soll.
 setReadOnly ($readOnly=true)
 Setzt den Hash auf schreibgeschützt.

Öffentliche, statische Methoden

static factory ($hash=null, $length=0)
 Erstellt einen neuen Hash.
static fromText ($text=null, $length=0)
 Klartextentgegenname und Hashbildung.

Geschützte Methoden

 __construct ($hash=null, $length=0, $algorithm=null)
 Hash-Konstrukt.
 _generateHash ($text=null)
 Generiert einen (zufälligen) Hash.

Geschützte, statische Methoden

static _isHashInstalled ()
 Prüft, ob Funktion hash() verfügbar ist.

Geschützte Attribute

 $_algorithm = 'md5'
 string, Benutzter Algorithmus
 $_hash = null
 string, Hash
 $_length = 0
 int, Laenge, auf die der Hash bei Rueckgabe gekürzt werden soll, bei 0 wird er nicht gekürzt
 $_readOnly = false
 bool, ob Objekt schreibgeschützt ist

Statische geschützte Attribute

static $_hashInstalled = true
 bool, ob PHP mit Hash-Unterstützung kompiliert wurde


Ausführliche Beschreibung

Repräsentiert einen Hash.

Autor:
DSAo-Md

http://www.gnu.org/licenses/gpl-3.0.html GNU Public License

Version:
SVN: $Id: Hash.php 519 2009-09-13 15:51:26Z saviola777 $

Definiert in Zeile 9 der Datei Hash.php.


Beschreibung der Konstruktoren und Destruktoren

Dsao_Hash::__construct ( hash = null,
length = 0,
algorithm = null 
) [protected]

Hash-Konstrukt.

Parameter:
$hash string, Hash
$length int, Länge, auf die gekürzt werden soll
$algorithm string, Algorithmus
Rückgabe:
void

Definiert in Zeile 45 der Datei Hash.php.

Benutzt Dsao_Registry::get(), setAlgorithm(), setHash() und setLength().

00046   {
00047     // Falls kein Algorithmus übergeben wurde, Standardalgorithmus wählen
00048     if (null === $algorithm)
00049     {
00050       $algorithm = Dsao_Registry::get('config')->encryption->hashAlgorithm;
00051     }
00052 
00053     // Werte setzen
00054     $this->setAlgorithm($algorithm);
00055     $this->setHash($hash);
00056     $this->setLength($length);
00057   }


Dokumentation der Elementfunktionen

Dsao_Hash::__toString (  ) 

Wandelt Hash in String um.

Rückgabe:
string Hash

Erneute Implementation in Dsao_Hash_Password.

Definiert in Zeile 64 der Datei Hash.php.

Benutzt getHash().

00065   {
00066     return $this->getHash();
00067   }

Dsao_Hash::_generateHash ( text = null  )  [protected]

Generiert einen (zufälligen) Hash.

Parameter:
$text string, Text, aus dem Hash erzeugt werden soll
Rückgabe:
void

Definiert in Zeile 75 der Datei Hash.php.

Benutzt _isHashInstalled().

Wird benutzt von Dsao_Hash_Password::_generatePassword() und setHash().

00076   {
00077     $text = (null === $text ? uniqid(mt_rand(), true) : $text);
00078 
00079     $this->_hash = (self::_isHashInstalled() ?
00080       hash($this->_algorithm, $text) :
00081         call_user_func($this->_algorithm, $text));
00082   }

static Dsao_Hash::_isHashInstalled (  )  [static, protected]

Prüft, ob Funktion hash() verfügbar ist.

Rückgabe:
bool, Ob hash() vorhanden ist

Definiert in Zeile 89 der Datei Hash.php.

Wird benutzt von _generateHash().

00090   {
00091     if (null === self::$_hashInstalled)
00092     {
00093       self::$_hashInstalled = (function_exists('hash') ? true : false);
00094     }
00095 
00096     return self::$_hashInstalled;
00097   }

Dsao_Hash::compareTo ( Dsao_Hash hash  ) 

Hash-Vergleich.

Vergleicht den Hash mit einem anderen, wobei der fremde Hash mindestens genauso lang sein muss, aber länger sein darf (überstehendes wird abgeschnitten). Dies ist z.B. nützlich, wenn in der Datenbank nicht genügend Platz für einen SHA1-Hash ist, somit also z.B. nur die ersten 20 Zeichen gespeichert werden. Dann werden einfach nur die ersten 20 Zeichen des zu prüfenden Hashes verglichen

Parameter:
$hash Dsao_Hash, Zu vergleichender Hash
Rückgabe:
bool Ob Hashes 'gleich' oder nicht

Definiert in Zeile 112 der Datei Hash.php.

Benutzt getHash().

00113   {
00114     return ($this->getHash() == $hash->getHash($this->getLength()));
00115   }

static Dsao_Hash::factory ( hash = null,
length = 0 
) [static]

Erstellt einen neuen Hash.

Parameter:
$hash string, Hash
$length int, Länge des Hashes
Rückgabe:
Dsao_Hash, Hash-Objekt

Erneute Implementation in Dsao_Hash_Password.

Definiert in Zeile 124 der Datei Hash.php.

Wird benutzt von Dsao_Uri_Http::setToken().

00125   {
00126     return new self($hash, $length);
00127   }

static Dsao_Hash::fromText ( text = null,
length = 0 
) [static]

Klartextentgegenname und Hashbildung.

Nimmt Klartext entgegen und bildet daraus den Hash. Der Klartext wird nicht gespeichert.

Parameter:
$text string, Klartext
$length int, Länge des Hashes (!)
Rückgabe:
Dsao_Hash, Hash

Definiert in Zeile 139 der Datei Hash.php.

Wird benutzt von Dsao_Model_User_Profile::_editPassword().

00140   {
00141     // Hash erstellen
00142     $hash = new self(null, $length);
00143 
00144     // Hash generieren und setzen
00145     $hash->_generateHash($text);
00146 
00147     return $hash;
00148   }

Dsao_Hash::getAlgorithm (  ) 

Gibt dem verwendeten Algorithmus zurück.

Rückgabe:
string Algorithmus

Definiert in Zeile 155 der Datei Hash.php.

00156   {
00157     return $this->_algorithm;
00158   }

Dsao_Hash::getHash ( length = 0  ) 

Gibt den aktuellen Hash, gekürzt oder ungekürzt, zurück.

Parameter:
$length int, Länge, auf die gekürzt werden soll; null = Wert aus Klasse, 0 = vollständiger Hash
Rückgabe:
string, Hash

Definiert in Zeile 167 der Datei Hash.php.

Wird benutzt von __toString(), Dsao_Hash_User::_findRow(), compareTo() und Dsao_Hash_User::insert().

00168   {
00169     // Falls ganzer String zurückgegeben werden soll, oder in Klasse keine
00170     // Länge definiert wurde
00171     if (0 === $length || (!$length && !$this->_length))
00172     {
00173       return $this->_hash;
00174     }
00175     // Falls keine Länge definiert wurde, die aus Klasse nehmen
00176     else if (!$length)
00177     {
00178       $length = $this->_length;
00179     }
00180 
00181     // Gekürzten Hash zurückgeben
00182     return substr($this->_hash, 0, $length);
00183   }

Dsao_Hash::getLength ( trueLength = false  ) 

Länge des Hashes, bzw.

Länge, auf den er gekürzt werden soll, zurück geben.

Parameter:
$trueLength bool, Ob wahre Länge des Hashes zurück gegeben werden soll
Rückgabe:
int, Länge des Hashes

Definiert in Zeile 191 der Datei Hash.php.

00192   {
00193     // Falls wahre Länge zurück gegeben werden soll, oder Hash eh nicht gekürzt
00194     // werden sollte
00195     if ($trueLength || !$this->_length)
00196     {
00197       return strlen($this->_hash);
00198     }
00199 
00200     return $this->_length;
00201   }

Dsao_Hash::isReadOnly ( throw = false  ) 

Gibt zurück, ob Objekt schreibgeschützt ist.

Parameter:
$throw bool, Ob ggf. eine Exception geworfen werden soll
Rückgabe:
bool, ob Objekt schreibgeschützt ist

Definiert in Zeile 209 der Datei Hash.php.

Wird benutzt von Dsao_Hash_User::__set(), Dsao_Hash_User::hasDuplicates(), setAlgorithm(), setHash() und setLength().

00210   {
00211     if (true === $throw && true === $this->_readOnly)
00212     {
00213       throw new Dsao_Exception('dsao_hash_object_readonly');
00214     }
00215 
00216     return (bool) $this->_readOnly;
00217   }

Dsao_Hash::setAlgorithm ( algorithm  ) 

Festsetzung des Verschluesselungsalgorithmus.

Legt einen Verschlüsselungsalgorithmus fest. Eine Änderung des Algorithmus bewirkt keine Änderung des Hashes, dieser muss erst neu generiert werden

Parameter:
$algorithm string, Algorithmus
Rückgabe:
Dsao_Hash, fließendes Interface

Definiert in Zeile 228 der Datei Hash.php.

Benutzt isReadOnly().

Wird benutzt von __construct().

00229   {
00230     // Falls Objekt schreibgeschützt ist wird eine Exception geworfen
00231     $this->isReadOnly(true);
00232 
00233     // Falls Hash-Funktionen verfügbar
00234     if (self::_isHashInstalled())
00235     {
00236       // Algorithmus gültig?
00237       if (in_array($algorithm, hash_algos()))
00238       {
00239         $this->_algorithm = $algorithm;
00240       }
00241     }
00242     // Ansonsten schauen, ob Funktion selber vorhanden (md5(), sha1(), crc32()
00243     // usw.)
00244     else
00245     {
00246       if (function_exists($algorithm))
00247       {
00248         $this->_algorithm = $algorithm;
00249       }
00250     }
00251 
00252     return $this;
00253   }

Dsao_Hash::setHash ( hash = null,
fromText = false 
)

Legt den Hash fest.

Wird nichts übergeben, so wird ein neuer generiert. Durch den zweiten Parameter kann auch Klartext verschlüsselt werden.

Parameter:
$hash string, Hash
$fromText bool, ob Klartext übergeben wurde
Rückgabe:
Dsao_Hash Fließendes Interface

Definiert in Zeile 265 der Datei Hash.php.

Benutzt _generateHash() und isReadOnly().

Wird benutzt von __construct().

00266   {
00267     // Falls Objekt schreibgeschützt ist wird eine Exception geworfen
00268     $this->isReadOnly(true);
00269 
00270     // Falls kein Hash übergeben wurde, zufälligen generieren
00271     if (null === $hash || $fromText)
00272     {
00273       $this->_generateHash(($fromText ? $hash : null));
00274     }
00275     else
00276     {
00277       $this->_hash = $hash;
00278     }
00279 
00280     return $this;
00281   }

Dsao_Hash::setLength ( length = 0  ) 

Setzt Länge, auf die der Hash bei der Rückgabe gekürzt werden soll.

Parameter:
$length int, Länge; 0 = ungekürzt
Rückgabe:
Dsao_Hash Fließendes Interface

Definiert in Zeile 289 der Datei Hash.php.

Benutzt isReadOnly().

Wird benutzt von __construct().

00290   {
00291     // Falls Objekt schreibgeschützt ist wird eine Exception geworfen
00292     $this->isReadOnly(true);
00293 
00294     $this->_length = $length;
00295 
00296     return $this;
00297   }

Dsao_Hash::setReadOnly ( readOnly = true  ) 

Setzt den Hash auf schreibgeschützt.

Parameter:
$readOnly bool, schreibgeschützt
Rückgabe:
Dsao_Hash, fließendes Interface

Definiert in Zeile 305 der Datei Hash.php.

00306   {
00307     $this->_readOnly = (bool) $readOnly;
00308 
00309     return $this;
00310   }


Die Dokumentation für diese Klasse wurde erzeugt aufgrund der Datei:

Erzeugt am Fri Sep 18 19:04:12 2009 für DSA online - Morgendaemmerung von  doxygen 1.5.7.1