SHA512: liefert 128-stelligen Passwort-Hashwert (SHA-2)
Autor: Ralf v.d.Mark
eingetragen: Mittwoch, 29. Juni 2011 um 12:18 Uhr (26/2011 Kalenderwoche)
geändert: Mittwoch, 21. Dezember 2011 um 15:06 Uhr (51/2011 Kalenderwoche)
Keywords: SHA2 SHA512 hash sha Passwort Hashwert
Kategorien: PHP,
Text:
Der PHP-Befehl hash('sha512', 'ein Passwort')
liefert einen 128-stelligen Passwort-Hashwert zurück.
http://de.wikipedia.org/wiki/SecureHashAlgorithm
http://de2.php.net/manual/de/function.hash.php
Quellcode:
/**
* Liefert 128-stelligen Passwort-Hashwert (auch Fingerprint o. Streuwert)
* der es Hackern erschweren soll, das Passwort des Users rueckwaerz aus
* dem Hash auszuspaehen (Kollisionsangriff).
*
* Zur Info: http://de.wikipedia.org/wiki/Secure_Hash_Algorithm
* SHA-512 gehoert zur SHA-2-Familie
* * Output size: 512/384 bits,
* * Internal state size: 512 bits,
* * Block size: 1024 bits,
* * Max message size: 2128 bits − 1 bit,
* * Zeichengroesse: 64 bits,
* * Runden: 80,
* * Operationen: add, and, or, xor, shift, rotate,
* * Bisher keine Hash-Kollision bekannt!
*
* @author Ralf von der Mark
* @copyright Ralf von der Mark
* @version 1.0 vom 28.06.2011
* @tutorial http://de2.php.net/manual/de/function.hash.php
*
* @param string $meinPasswort
* @param string $badesalz
* @param integer $anzahlLoops
* @return string [Hash (128 Zeichen)]
*/
function passwortHashRuettelBox($meinPasswort,
$badesalz,
$anzahlLoops = 5000)
{
$badesalz = md5($badesalz);/* Salz in 32-stelligen Wert hashen */
$badesalzTeil1 = substr($badesalz, 0, 16);/* 1.Teil des Salz-Hash */
$badesalzTeil2 = substr($badesalz, 16);/* 2.Teil des Salz-Hash */
$jederZweite = 2;
for ($loopZaehler = 1; $loopZaehler < $anzahlLoops; $loopZaehler++) {
$meinPasswort = hash('sha512', $meinPasswort);
if ($jederZweite == 2) {
$jederZweite = 1;
$meinPasswort = hash('sha512', $meinPasswort
.$badesalzTeil2
.$badesalzTeil1
.$loopZaehler);
} else {
$jederZweite = 2;
$meinPasswort = hash('sha512', $meinPasswort
.$loopZaehler
.$badesalz);
}//ENDE: else ==> if()
echo chr(10).$loopZaehler.'.) '.$meinPasswort.chr(10).'<br>';
}//ENDE: for ()
return $meinPasswort;
}//ENDE: function passwortHashRuettelBox(...)
/**
* Kleine Hilfe zum erstellen des Usernamens in Base64
* und des gehashten Passwortes
* Hinweis: Nach der Funktion wird exit(); ausgefuehrt!
*
* @param string $username (gewuenschte Benutzername)
* @param string $passwort (gewuenschtes Passwort)
* @param string $badesalz (das Salz fuers Passwort)
*
* @example echo getZugangsDaten('myUsername', 'myPasswort'); */
function getZugangsDaten($username, $passwort, $badesalz)
{
return '<h1>Username: '
.base64_encode($username)
.'</h1>
<h1>Passwort: '
.passwortHashRuettelBox($passwort, $badesalz)
.'</h1>';
exit();
}//ENDE: function getZugangsDaten(...)