password hash(): Skillnad mellan sidversioner

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök
 
(2 mellanliggande sidversioner av samma användare visas inte)
Rad 1: Rad 1:
= password\_hash =
= password_hash =
 
'''password_hash''' — Skapar en lösenordshash
'''password\_hash()''' — Skapar en hash av ett lösenord


== Beskrivning ==
== Beskrivning ==
<pre>
password_hash(#[\SensitiveParameter] string $password, string|int|null $algo, array $options = []): string
</pre>
'''password_hash()''' skapar en ny lösenordshash med en stark envägshashing-algoritm.


'''password\_hash()''' ( '''string''' <pre>$password</pre>, '''string|int|null''' <pre>$algo</pre>, '''array''' <pre>$options</pre> = [] ) : '''string'''
De algoritmer som för närvarande stöds är:
 
* '''PASSWORD_DEFAULT''' - Använder bcrypt-algoritmen (standard sedan PHP 5.5.0). Denna konstant är utformad för att förändras över tid när starkare algoritmer läggs till. Därför rekommenderas det att lagra resultatet i en databas med kolumnbredd på minst 255 tecken.
Funktionen '''password\_hash()''' skapar en ny lösenordshash med hjälp av en stark enkelriktad hash-algoritm.
* '''PASSWORD_BCRYPT''' - Använder CRYPT_BLOWFISH-algoritmen för att skapa en hash. Detta resulterar i en standardkompatibel hash med "$2y$"-identifieraren och genererar alltid en 60 tecken lång sträng.
 
* '''PASSWORD_ARGON2I''' - Använder Argon2i-algoritmen (tillgänglig från och med PHP 7.2.0).
De följande algoritmerna stöds för närvarande:
* '''PASSWORD_ARGON2ID''' - Använder Argon2id-algoritmen (tillgänglig från och med PHP 7.3.0).
 
* '''PASSWORD\_DEFAULT''' - Använder standardalgoritmen (för närvarande bcrypt). Observera att denna konstant kan ändras över tid när nya och starkare algoritmer läggs till i PHP.
* '''PASSWORD\_BCRYPT''' - Använder CRYPT\_BLOWFISH-algoritmen för att skapa hashen. Resultatet blir alltid en 60-teckens sträng.
* '''PASSWORD\_ARGON2I''' - Använder Argon2i-hashalgoritmen. Denna algoritm är endast tillgänglig om PHP är kompilerad med Argon2-stöd.
* '''PASSWORD\_ARGON2ID''' - Använder Argon2id-hashalgoritmen. Denna algoritm är också endast tillgänglig om PHP är kompilerad med Argon2-stöd.
 
=== Stödda alternativ för PASSWORD\_BCRYPT ===


* '''cost''' (int) - Anger den algoritmiska kostnaden som ska användas. Standardvärdet är 10.
== Parametrar ==
* '''password''' - Användarens lösenord.
* '''algo''' - En konstant som anger vilken algoritm som ska användas.
* '''options''' - En associativ array med alternativ.  


=== Stödda alternativ för PASSWORD\_ARGON2I och PASSWORD\_ARGON2ID ===
Om '''options''' är tomt genereras ett slumpmässigt salt och standardkostnaden används.


* '''memory\_cost''' (int) - Maximal mängd minne (i kibibyte) som får användas.
== Returnerar ==
* '''time\_cost''' (int) - Maximal tid som hashningen får ta.
Returnerar den hashade lösenordssträngen. All information som behövs för att verifiera lösenordet (algoritm, kostnad, och salt) inkluderas i hashen, vilket gör det möjligt för [[password_verify()]] att verifiera lösenordet utan att behöva spara separat information.
* '''threads''' (int) - Antal trådar som ska användas.
 
=== Parametrar ===
 
; <pre>$password</pre>
: Användarens lösenord.
 
; <pre>$algo</pre>
: En konstant som anger vilken algoritm som ska användas.
 
; <pre>$options</pre>
: En associativ array med alternativ för den valda algoritmen.
 
=== Returnerar ===
 
Returnerar det hashade lösenordet som en sträng.


== Exempel ==
== Exempel ==
'''Exempel #1 Använda password_hash() med standardinställningar'''
<pre>
<?php
echo password_hash("hemligt_losenord", PASSWORD_DEFAULT);
?>
</pre>
Utskriften blir något liknande:
<pre>
$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a
</pre>


=== Exempel 1: Använda standardinställningar ===
'''Exempel #2 Använda password_hash() med anpassad kostnad'''
 
<pre>
<pre>
<?php
<?php
echo password_hash("dittlösenord", PASSWORD_DEFAULT);
$options = ['cost' => 12];
echo password_hash("hemligt_losenord", PASSWORD_BCRYPT, $options);
?>
?>
</pre>
Utskriften blir något liknande:
<pre>
$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K
</pre>
</pre>


Möjlig output:
'''Exempel #3 Använda password_hash() med Argon2i'''
 
<pre>$2y$10$wH8f... (hashad sträng)</pre>
 
=== Exempel 2: Ange kostnaden manuellt ===
 
<pre>
<pre>
<?php
<?php
$options = [
echo 'Argon2i hash: ' . password_hash('hemligt_losenord', PASSWORD_ARGON2I);
    'cost' => 12,
];
echo password_hash("dittlösenord", PASSWORD_BCRYPT, $options);
?>
?>
</pre>
Utskriften blir något liknande:
<pre>
Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
</pre>
</pre>


== Noteringar ==
== Se även ==
* [[password_verify()]] - Verifierar att ett lösenord matchar en hash.
* [[password_needs_rehash()]] - Kontrollerar om en hash behöver omarbetas.
* [[crypt()]] - Envägshashning av strängar.
* [[sodium_crypto_pwhash_str()]] - Genererar en ASCII-kodad hash.


* Det är starkt rekommenderat att inte ange egna saltvärden; funktionen genererar automatiskt ett säkert salt.
* Justera kostnadsparametern för att balansera mellan säkerhet och prestanda.
== Se även ==


* '''[[password_verify()]]''' - Verifierar att ett lösenord matchar en hash.
* '''[[password_needs_rehash()]]''' - Kontrollerar om en given hash behöver omhashas.
* '''[[crypt()]]''' - Enkelriktad stränghashning.
* '''[[sodium_crypto_pwhash_str()]]''' - Genererar en ASCII-kodad hash.


= Sidslut =
= Sidslut =

Nuvarande version från 9 november 2024 kl. 12.39

password_hash

password_hash — Skapar en lösenordshash

Beskrivning

password_hash(#[\SensitiveParameter] string $password, string|int|null $algo, array $options = []): string

password_hash() skapar en ny lösenordshash med en stark envägshashing-algoritm.

De algoritmer som för närvarande stöds är:

  • PASSWORD_DEFAULT - Använder bcrypt-algoritmen (standard sedan PHP 5.5.0). Denna konstant är utformad för att förändras över tid när starkare algoritmer läggs till. Därför rekommenderas det att lagra resultatet i en databas med kolumnbredd på minst 255 tecken.
  • PASSWORD_BCRYPT - Använder CRYPT_BLOWFISH-algoritmen för att skapa en hash. Detta resulterar i en standardkompatibel hash med "$2y$"-identifieraren och genererar alltid en 60 tecken lång sträng.
  • PASSWORD_ARGON2I - Använder Argon2i-algoritmen (tillgänglig från och med PHP 7.2.0).
  • PASSWORD_ARGON2ID - Använder Argon2id-algoritmen (tillgänglig från och med PHP 7.3.0).

Parametrar

  • password - Användarens lösenord.
  • algo - En konstant som anger vilken algoritm som ska användas.
  • options - En associativ array med alternativ.

Om options är tomt genereras ett slumpmässigt salt och standardkostnaden används.

Returnerar

Returnerar den hashade lösenordssträngen. All information som behövs för att verifiera lösenordet (algoritm, kostnad, och salt) inkluderas i hashen, vilket gör det möjligt för password_verify() att verifiera lösenordet utan att behöva spara separat information.

Exempel

Exempel #1 Använda password_hash() med standardinställningar

<?php
echo password_hash("hemligt_losenord", PASSWORD_DEFAULT);
?>

Utskriften blir något liknande:

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

Exempel #2 Använda password_hash() med anpassad kostnad

<?php
$options = ['cost' => 12];
echo password_hash("hemligt_losenord", PASSWORD_BCRYPT, $options);
?>

Utskriften blir något liknande:

$2y$12$QjSH496pcT5CEbzjD/vtVeH03tfHKFy36d4J0Ltp3lRtee9HDxY3K

Exempel #3 Använda password_hash() med Argon2i

<?php
echo 'Argon2i hash: ' . password_hash('hemligt_losenord', PASSWORD_ARGON2I);
?>

Utskriften blir något liknande:

Argon2i hash: $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0

Se även


Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/function.password-hash.php
PHP Funktioner Funktionsreferens Kryptografitillägg Lösenordshashning


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Datorhjälp som har sponsrat Linux.se med webbhotell.