Lösenords hash och jämförare

Uppdaterad

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.
Det går även att välja hur många rundor lösenordet ska hashas.
Nyhet är att man kan få ut ett slumpmässigt lösenord, kan användas vid t.ex "glömt lösenord".
Standard inställningar är sha256 med 32-tecken slump salt och 256 hashrundor som skrivs ut hexadecimalt.

Ladda ner

class.pwdhash.php 1.28kB v1.4.5
class.pwdhash.php 1.28kB v1.4.4
class.pwdhash.php v1.3.4 Fel i koden
class.pwdhash.php 1.27kB v1.3.2
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 or bool $pwd [, integer $length = 12 [, string $special_chars = '' ]] ) returnerar true vid byte, slumpmässigt lösenord, 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.
$length Integer som anger längden på det slumpmässiga lösenordet.
$special_chars Sträng med special-tecken som används i det slumpmäsiga lösenordet. (utöver a-z A-Z 2-9)(l I 1 och o O 0 liknar varandra och är borttagna)
$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';
}
?>
Exempel #4
Kod: Markera allt
<?php
// Skapa ett 14 tecken långt slumpmässigt lösenord med specialtecknen, !?@-+.
// Hexadecimal hash av det slumpmässiga lösenordet med sha256 och ett slump salt på 32 tecken som hashas 256 rundor.
$pwdhash = new pwdhash('');
// Lösenord att mejla.
$random_pasword $pwdhash->new_password(true,14,'!?@-+');
// Hashkey att spara i databasen.
$hashkey $pwdhash->hashkey();
?>

Version

v1.4.5 - Fixat unidentified variabel vid slumpmässigt lösenord.
v1.4.4 - Fixat att utf8 på salt användes intern, det blev då fel längd på saltet.
v1.3.4 - Utf8 ut på salt och lösenord. Lite kod optimering.
v1.3.2 - Göra slumpmässigt lösenord. Lite kod optimering.
v1.2.1 - Hasha i flera rundor.
v1.1.0 - Fixat att hex-sträng inte uppdaterades vid byte av salt.

Publiserad
Uppdaterad


Inga kommentarer

Skriv en kommentar

Återstående antal tecken: 768

Uppdaterad: 2017-08-10 13:53
Copyright © 2009-2018 - tunisempire.com - All Rights Reserved RSS Feed Sitemap