tunisempire.com

my own empire

Lösenords hash och jämförare

Uppdaterad Söndagen den 11 December 2011 16:13:05

En PHP-klass för att hasha lösenord och jämföra lösenord med en hash.

Denna klass används för att hasha lösenord med fast eller slumpmässigt salt. Hashnyckeln kan sedan jämföras med lösenordet och se om det stämmer. Klarar även utf-8 strängar i lösenord, salt och jämförelse.
Nyhet är att det går att välja hur många rundor lösenordet ska hashas.
Standard inställningar är sha256 med 32-tecken slump salt och 256 hashrundor som skrivs ut hexadecimalt.

Ladda ner

class.pwdhash.php 1.02kB v1.2.1
class.pwdhash.php 967B v1.1.0

Användning

Denna klass kan användas för att skapa en hash nyckel till login för att spara i databas. Nyckeln i databasen kan sedan jämföras med hjälp av klassen med lösenordet vid inloggning.

Beskrivning

pwdhash::__construct ( string $pwd [, string or integer $salt = 32 [, bool $hex = true [, bool $utf8 = false [, integer $rounds = 256 ]]]] )
pwdhash::set_algorithm ( string $algo ) returnerar true vid byte, annars false.
pwdhash::new_password ( string $pwd ) returnerar true vid byte, annars false.
pwdhash::new_salt ( string or integer $salt ) returnerar true vid byte, annars false.
pwdhash::salt ( [ bool $hex ] ) returnerar saltet.
pwdhash::hash ( [ bool $hex ] ) returnerar en hash av lösenordet.
pwdhash::hashkey ( [ bool $hex ] ) returnerar $hashkey.
pwdhash::compare ( string $hashkey [, bool $hex ] ) returnerar true vid lika, annars false.

Parametrar

$pwd Strängen som ska hashas eller jämföras.
$salt Sträng med ett fast salt eller en integer med längden på ett automatiskt slumpat salt.
$hex Väljer om hash och salt ska visas hexadecimalt. Annars ASCII-tecken.
$utf8 Väljer om alla inputs är utf8-tecken. Annars Latin1.
$rounds Integer med antalet runder som lösenordet hashas.
$algo Sträng med hash algoritmen. ex md5, sha256, sha512.
$hashkey Sträng med en hashnyckel som innehåller både salt och hash och kan jämföras mot $pwd med pwdhash::compare().

Exempel

Exempel #1
Kod: Markera allt
<?php
// Hexadecimal hash av 'Lösenord' med sha256 och ett slump salt på 32 tecken som hashas 256 rundor.
$pwdhash = new pwdhash('Lösenord');
$hashkey $pwdhash->hashkey();
?>
Exempel #2
Kod: Markera allt
<?php
// Jämför 'Lösenord' med en hexadecimal hash med sha256 och ett slump salt på 32 tecken som hashas 256 rundor.
$pwdhash = new pwdhash('Lösenord');
if(
$pwdhash->compare($hashkey)){
    echo 
'Lösenord stämmer med $hashkey';
}
?>
Exempel #3
Kod: Markera allt
<?php
// ASCII hash av utf-8 strängen 'Lösenord' med sha512 och ett slump salt på 64 tecken som hashas 512 rundor.
// Jämför utf-8 strängen 'lösen' med en ASCII hash med sha512 och ett slump salt på 64 tecken som hashats 512 rundor.
$pwdhash = new pwdhash('Lösenord',64,false,true,512);
$pwdhash->set_algorithm('sha512');
$hashkey $pwdhash->hashkey();
$pwdhash->new_password('lösen');
if(!
$pwdhash->compare($hashkey)){
    echo 
'Lösenord är ändrat och stämmer inte med $hashkey';
}
?>

Version

v1.2.1 - Hasha i flera rundor.
v1.1.0 - Fixat att hex-sträng inte uppdaterades vid byte av salt.


Publiserad Måndagen den 3 Maj 2010 20:02:27
Uppdaterad Söndagen den 11 December 2011 16:13:05


Inga kommentarer

Skriv en kommentar

Återstående antal tecken: 768

Rotera RSS Feed Sitemap  
Uppdaterad: 2012-01-08 00:54
Copyright © 2009-2012 - tunisempire.com - All Rights Reserved
Valid XHTML 1.1 Valid CSS!