PHP -> Funkcie -> Funkcie pre prácu s reťazcami PHP -> crypt
Syntax
string crypt ( string str [, string salt] )
Popis
Príkaz jazyka PHP
crypt -- Jednosměrné zašifrování řetězce
crypt zašifruje řetězec pomocí standardní Unixovské šifrovací metody DES nebo alternativního algoritmu dostupného v operačním systému. Argumenty jsou řetězec k zašifrování a volitelný dvouznakový řetězec salt, na kterém se šifrování založí. Více informací naleznete v Unixovské man stránce vaší crypt funkce.
Není-li uveden salt, PHP jej náhodně vygeneruje.
Některé operační systémy podporují více typů šifrování. Někdy se standardní DES šifrování nahrazuje šifrovacím algoritmem založeným na MD5. Typ šifrování se zvolí podle argumentu salt. PHP zjistí pči instalaci schopnosti funkce crypt a bude přijímat salt pro další typy šifrování. Při absenci salt PHP aicky vygeneruje standardní dvouznakový DES salt a v případě, že je výchozím typem šifrování na daném systému MD5, vygeneruje náhodný salt kompatibilní s MD5. PHP vytváří konstantu CRYPT_SALT_LENGTH, která vám řekne, jestli se na váš systém hodí běžný dvouznakový salt nebo delší dvanáctiznakový MD5 salt.
Používáte-li poskytnutý salt, měli byste si být vědomi toho, že se generuje jen jednou. Pokud tuto funkci voláte rekurzivně, může to mít účinek na vzhled a bezpečnost.
U standardního DES šifrování crypt vrací salt jako první dva znaky výstupu. K tomu také používá jen prvních osum znaků z str, takže delší řetězce, ktewré začínají osmi stejnými znaky budou generovat i stejný výsledek (když je použit stejný salt).
Na systémech, kde funkce crypt podporuje více typů šifrování se následující konstanty nastaví na 0 nebo 1 podle toho, zda je daný typ dostupný:
- CRYPT_STD_DES - Standardní DES šifrování s dvouznakovým SALT
- CRYPT_EXT_DES - Rozšířené DES šifrování s devítiznakovým SALT
- CRYPT_MD5 - MD5 šifrování s dvanáctiznakovým SALT začínajícím $1$
- CRYPT_BLOWFISH - Rozšířené DES šifrování s šestnáctiznakovým SALT začínajícím $2$
Poznámka: Neexistuje žádná decrypt funkce, protože crypt() používá jednosměrný algoritmus.
Príklad
<?php
$heslo =
crypt("MePrvniHeslo");
// necháme vygenerovat salt
/* Mohli byste narazit na problémy při úplném výsledku crypt() jako salt pro
porovnání hesla, pokud jsou použity rozdílné šifrovací algoritmy. (jak bylo
řečeno výše, standardní DES šifrování používá dvouznakový salt, ale MD5
šifrování používá dvanáctiznakový. */
if (crypt($uziv_vstup,
$heslo) ==
$heslo) {
echo "Heslo ověřeno!";
}
?>
Pozri aj
md5