crypt

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ý:


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