crypt

crypt -- Jednosměrné zašifrování řetězce

Popis

string crypt ( string str [, string salt])

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 automaticky 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 .

Příklad 1 . crypt( ) pří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

 
!"

 
;

 
}

 
?



Dále také md5( ) a Mcrypt příkazy .