Výukový program PHP

PHP HOME Úvod do PHP Instalace PHP Syntaxe PHP Komentáře PHP PHP proměnné PHP Echo / tisk Datové typy PHP PHP řetězce PHP čísla PHP matematika Konstanty PHP Operátoři PHP PHP If...Else...Elseif Přepínač PHP PHP smyčky Funkce PHP Pole PHP PHP Superglobals PHP RegEx

Formuláře PHP

Manipulace s formuláři PHP Ověření formuláře PHP Je vyžadován formulář PHP Adresa URL / e-mail PHP formuláře Formulář PHP dokončen

PHP pro pokročilé

Datum a čas PHP Zahrnout PHP Práce se soubory PHP PHP soubor otevřít/číst Vytvoření/zápis souboru PHP Nahrání souboru PHP PHP soubory cookie PHP relace PHP filtry Pokročilé filtry PHP Funkce zpětného volání PHP PHP JSON Výjimky PHP

PHP OOP

PHP Co je OOP PHP třídy/objekty PHP konstruktor PHP destruktor Modifikátory přístupu PHP Dědičnost PHP Konstanty PHP Abstraktní třídy PHP Rozhraní PHP Vlastnosti PHP Statické metody PHP Statické vlastnosti PHP Jmenné prostory PHP PHP Iterables

Databáze MySQL

Databáze MySQL Připojení MySQL MySQL Vytvořte DB Vytvořit tabulku MySQL Vložit data MySQL MySQL Get Last ID MySQL Insert Multiple MySQL připraveno MySQL Select Data Kde MySQL Pořadí MySQL podle Vymazání dat MySQL Aktualizace dat MySQL Limit dat MySQL

PHP XML

PHP analyzátory XML PHP SimpleXML Parser PHP SimpleXML - Získejte PHP XML expat PHP XML DOM

PHP - AJAX

Úvod do AJAXu AJAX PHP Databáze AJAX AJAX XML AJAX Live Search Anketa AJAX

Příklady PHP

Příklady PHP PHP kompilátor PHP kvíz Cvičení PHP Certifikát PHP

Reference PHP

Přehled PHP Pole PHP Kalendář PHP Datum PHP Adresář PHP Chyba PHP Výjimka PHP Souborový systém PHP PHP filtr PHP FTP PHP JSON Klíčová slova PHP PHP Libxml PHP Mail PHP matematika PHP Různé PHP MySQLi Síť PHP Ovládání výstupu PHP PHP RegEx PHP SimpleXML PHP stream PHP řetězec PHP Variable Handling PHP XML Parser PHP zip Časová pásma PHP

Funkce PHP crypt() .


❮ Odkaz na řetězec PHP

Definice a použití

Funkce crypt() vrací hashovaný řetězec pomocí algoritmů DES, Blowfish nebo MD5.

Tato funkce se v různých operačních systémech chová odlišně. PHP při instalaci kontroluje, jaké algoritmy jsou k dispozici a jaké algoritmy použít.

Parametr sůl je volitelný. crypt() však vytvoří slabé heslo bez soli. Ujistěte se, že specifikujete dostatečně silnou sůl pro lepší zabezpečení.

Existuje několik konstant, které se používají společně s funkcí crypt(). Hodnotu těchto konstant nastavuje PHP při instalaci.

Konstanty:

  • [CRYPT_STD_DES] – Standardní hash založený na DES se dvěma znaky salt z abecedy „./0-9A-Za-z“. Použití neplatných znaků v salt způsobí selhání této funkce.
  • [CRYPT_EXT_DES] – Rozšířený hash založený na DES s devítiznakovou solí sestávající z podtržítka následovaného 4 bajty počtu iterací a 4 bajty soli. Jsou kódovány jako tisknutelné znaky, 6 bitů na znak, nejméně významný znak jako první. Hodnoty 0 až 63 jsou kódovány jako "./0-9A-Za-z". Použití neplatných znaků v salt způsobí selhání funkce.
  • [CRYPT_MD5] – MD5 hašování s 12znakovou solí začínající $1$
  • [CRYPT_BLOWFISH] – Blowfish hash se solí začínající na $2a$, $2x$ nebo $2y$, dvoumístné cenové parametry „$“ a 22 znaků z abecedy „./0-9A-Za-z“ . Použití znaků mimo abecedu způsobí, že tato funkce vrátí řetězec nulové délky. Parametr "$" je 2-základní logaritmus počtu iterací pro základní hashovací algoritmus Blowfish-bashed a musí být v rozsahu 04-31. Hodnoty mimo tento rozsah způsobí selhání funkce.
  • [CRYPT_SHA_256] – SHA-256 hash s 16znakovou solí začínající na $5$. Pokud řetězec soli začíná "rounds=<N>$", použije se číselná hodnota N k označení toho, kolikrát má být hashovací smyčka provedena, podobně jako parametr cost na Blowfish. Výchozí počet kol je 5000, minimum je 1000 a maximum 999 999 999. Jakýkoli výběr N mimo tento rozsah bude zkrácen na nejbližší limit.
  • [CRYPT_SHA_512] – SHA-512 hash s 16znakovou solí začínající na $6$. Pokud řetězec soli začíná "rounds=<N>$", použije se číselná hodnota N k označení toho, kolikrát má být hashovací smyčka provedena, podobně jako parametr cost na Blowfish. Výchozí počet kol je 5000, minimum je 1000 a maximum 999 999 999. Jakýkoli výběr N mimo tento rozsah bude zkrácen na nejbližší limit.

V systémech, kde tato funkce podporuje více algoritmů, jsou výše uvedené konstanty nastaveny na "1", pokud jsou podporovány, a na "0" jinak.

Poznámka: Neexistuje žádná funkce dešifrování. Funkce crypt() používá jednosměrný algoritmus.


Syntax

crypt(str,salt)

Hodnoty parametrů

Parameter Description
str Required. Specifies the string to be hashed
salt Optional. A salt string to base the hashing on


Technické údaje

Návratová hodnota: Vrátí zakódovaný řetězec nebo řetězec, který je kratší než 13 znaků a je zaručeno, že se bude lišit od soli při selhání
Verze PHP: 4+
Seznam změn: PHP 5.6.0 – Pokud vynecháte salt, zobrazí bezpečnostní varování E_NOTICE .
PHP 5.3.7 – Přidány režimy Blowfish $2x$ a $2y$.
PHP 5.3.2 – Přidány SHA-256 a SHA-512. Opravené chování Blowfish při neplatných kolech vrací řetězec "selhání" ("*0" nebo "*1"), místo toho, aby se vrátil k DES.
PHP 5.3.0 - PHP nyní obsahuje vlastní implementaci pro MD5 crypt, Standard DES, Extended DES a algoritmy Blowfish a použije ji, pokud systém postrádá podporu pro jeden nebo více algoritmů.

Další příklady

Příklad

V tomto příkladu otestujeme různé algoritmy:

<?php
// 2 character salt
if (CRYPT_STD_DES == 1)
{
echo "Standard DES: ".crypt('something','st')."\n<br>";
}
else
{
echo "Standard DES not supported.\n<br>";
}

// 4 character salt
if (CRYPT_EXT_DES == 1)
{
echo "Extended DES: ".crypt('something','_S4..some')."\n<br>";
}
else
{
echo "Extended DES not supported.\n<br>";
}

// 12 character salt starting with $1$
if (CRYPT_MD5 == 1)
{
echo "MD5: ".crypt('something','$1$somethin$')."\n<br>";
}
else
{
echo "MD5 not supported.\n<br>";
}

// Salt starting with $2a$. The two digit cost parameter: 09. 22 characters
if (CRYPT_BLOWFISH == 1)
{
echo "Blowfish: ".crypt('something','$2a$09$anexamplestringforsalt$')."\n<br>";
}
else
{
echo "Blowfish DES not supported.\n<br>";
}

// 16 character salt starting with $5$. The default number of rounds is 5000.
if (CRYPT_SHA256 == 1)
{
echo "SHA-256: ".crypt('something','$5$rounds=5000$anexamplestringforsalt$')."\n<br>"; }
else
{
echo "SHA-256 not supported.\n<br>";
}

// 16 character salt starting with $6$. The default number of rounds is 5000.
if (CRYPT_SHA512 == 1)
{
echo "SHA-512: ".crypt('something','$6$rounds=5000$anexamplestringforsalt$');
}
else
{
echo "SHA-512 not supported.";
}
?>

Výstup výše uvedeného kódu může být (v závislosti na operačním systému):

Standard DES: stqAdD7zlbByI
Extended DES: _S4..someQXidlBpTUu6
MD5: $1$somethin$4NZKrUlY6r7K7.rdEOZ0w.
Blowfish: $2a$09$anexamplestringforsaleLouKejcjRlExmf1671qw3Khl49R3dfu
SHA-256: $5$rounds=5000$anexamplestringf$KIrctqsxo2wrPg5Ag/hs4jTi4PmoNKQUGWFXlVy9vu9
SHA-512: $6$rounds=5000$anexamplestringf$Oo0skOAdUFXkQxJpwzO05wgRHG0dhuaPBaOU/
oNbGpCEKlf/7oVM5wn6AN0w2vwUgA0O24oLzGQpp1XKI6LLQ0.


❮ Odkaz na řetězec PHP