Esercitazione PHP

PHP HOME Introduzione a PHP Installazione PHP Sintassi PHP Commenti PHP Variabili PHP PHP Eco/Stampa Tipi di dati PHP Stringhe PHP Numeri PHP PHP matematica Costanti PHP Operatori PHP PHP Se...Altro...Altro Passaggio PHP Ciclo PHP Funzioni PHP Matrici PHP Superglobali PHP RegEx PHP

Moduli PHP

Gestione dei moduli PHP Convalida del modulo PHP Modulo PHP richiesto URL/e-mail del modulo PHP Modulo PHP completo

PHP avanzato

Data e ora PHP PHP Include Gestione dei file PHP Apri/Leggi file PHP Creazione/scrittura di file PHP Caricamento file PHP Cookie PHP Sessioni PHP Filtri PHP Filtri PHP avanzati Funzioni di callback PHP PHP JSON Eccezioni PHP

PHP OOP

PHP Che cos'è OOP Classi/Oggetti PHP Costruttore PHP PHP distruttore Modificatori di accesso PHP Ereditarietà PHP Costanti PHP Classi astratte PHP Interfacce PHP Tratti PHP Metodi statici PHP Proprietà statiche PHP Spazi dei nomi PHP Iterabili PHP

Database MySQL

Database MySQL MySQL Connect MySQL Crea DB MySQL Crea tabella Dati di inserimento MySQL MySQL Ottieni l'ultimo ID MySQL inserisce più MySQL preparato MySQL Seleziona dati MySQL dove MySQL Ordina per MySQL Elimina dati Dati di aggiornamento MySQL Dati limite MySQL

PHP XML

Parser XML PHP Analizzatore PHP SimpleXML PHP SimpleXML - Ottieni PHP XML espatriato PHP XML DOM

PHP - AJAX

Introduzione all'Ajax AJAX PHP Database AJAX XML AJAX Ricerca in tempo reale AJAX Sondaggio AJAX

Esempi PHP

Esempi PHP compilatore PHP Quiz PHP Esercizi PHP Certificato PHP

Riferimento PHP

Panoramica di PHP matrice PHP Calendario PHP Data PHP Directory PHP Errore PHP Eccezione PHP File system PHP Filtro PHP PHP FTP PHP JSON Parole chiave PHP PHP Libxml Posta PHP PHP matematica PHP Varie PHP MySQLi Rete PHP Controllo dell'output PHP RegEx PHP PHP SimpleXML Flusso PHP Stringa PHP Gestione delle variabili PHP Analizzatore XML PHP Zip PHP Fuso orario PHP

Funzione PHP crypt()


❮ Riferimento alla stringa PHP

Definizione e utilizzo

La funzione crypt() restituisce una stringa hash utilizzando algoritmi DES, Blowfish o MD5.

Questa funzione si comporta in modo diverso su diversi sistemi operativi. PHP controlla quali algoritmi sono disponibili e quali algoritmi utilizzare quando viene installato.

Il parametro sale è facoltativo. Tuttavia, crypt() crea una password debole senza il sale. Assicurati di specificare un sale sufficientemente forte per una maggiore sicurezza.

Ci sono alcune costanti che vengono utilizzate insieme alla funzione crypt(). Il valore di queste costanti viene impostato da PHP al momento dell'installazione.

Costanti:

  • [CRYPT_STD_DES] - Hash standard basato su DES con salt a due caratteri dell'alfabeto "./0-9A-Za-z". L'utilizzo di caratteri non validi nel salt causerà il fallimento di questa funzione.
  • [CRYPT_EXT_DES] - Hash esteso basato su DES con un salt di nove caratteri costituito da un trattino basso seguito da 4 byte di conteggio delle iterazioni e 4 byte di salt. Questi sono codificati come caratteri stampabili, 6 bit per carattere, primo il carattere meno significativo. I valori da 0 a 63 sono codificati come "./0-9A-Za-z". L'utilizzo di caratteri non validi nel salt causerà il fallimento della funzione.
  • [CRYPT_MD5] - Hashing MD5 con un salt di 12 caratteri che inizia con $ 1 $
  • [CRYPT_BLOWFISH] - Hashing Blowfish con un sale che inizia con $2a$, $2x$ o $2y$, un parametro di costo a due cifre "$" e 22 caratteri dell'alfabeto "./0-9A-Za-z" . L'utilizzo di caratteri al di fuori dell'alfabeto farà sì che questa funzione restituisca una stringa di lunghezza zero. Il parametro "$" è il logaritmo in base 2 del conteggio delle iterazioni per l'algoritmo di hashing di Blowfish sottostante e deve essere compreso nell'intervallo 04-31. I valori al di fuori di questo intervallo causeranno il fallimento della funzione.
  • [CRYPT_SHA_256] - Hash SHA-256 con un salt di 16 caratteri che inizia con $ 5 $. Se la stringa salt inizia con "rounds=<N>$", il valore numerico di N viene utilizzato per indicare quante volte il ciclo di hashing deve essere eseguito, proprio come il parametro cost su Blowfish. Il numero predefinito di round è 5000, c'è un minimo di 1000 e un massimo di 999.999.999. Qualsiasi selezione di N al di fuori di questo intervallo verrà troncata al limite più vicino.
  • [CRYPT_SHA_512] - Hash SHA-512 con un salt di 16 caratteri che inizia con $ 6 $. Se la stringa salt inizia con "rounds=<N>$", il valore numerico di N viene utilizzato per indicare quante volte il ciclo di hashing deve essere eseguito, proprio come il parametro cost su Blowfish. Il numero predefinito di round è 5000, c'è un minimo di 1000 e un massimo di 999.999.999. Qualsiasi selezione di N al di fuori di questo intervallo verrà troncata al limite più vicino.

Sui sistemi in cui questa funzione supporta più algoritmi, le costanti sopra sono impostate su "1" se supportata e "0" in caso contrario.

Nota: non esiste una funzione di decrittazione. La funzione crypt() utilizza un algoritmo unidirezionale.


Sintassi

crypt(str,salt)

Valori dei parametri

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


Dettagli tecnici

Valore di ritorno: Restituisce la stringa codificata o una stringa più corta di 13 caratteri ed è garantito che differisca dal salt in caso di errore
Versione PHP: 4+
Registro delle modifiche: PHP 5.6.0 - Mostra un avviso di sicurezza E_NOTICE se salt viene omesso.
PHP 5.3.7 - Aggiunte le modalità Blowfish $2x$ e $2y$.
PHP 5.3.2 - Aggiunti SHA-256 e SHA-512. Risolto il problema con il comportamento di Blowfish sui round non validi che restituisce la stringa "fallito" ("*0" o "*1"), invece di tornare a DES.
PHP 5.3.0 - PHP ora contiene la propria implementazione per MD5 crypt, Standard DES, Extended DES e gli algoritmi Blowfish e la utilizzerà se il sistema non supporta uno o più algoritmi.

Altri esempi

Esempio

In questo esempio testeremo i diversi algoritmi:

<?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.";
}
?>

L'output del codice sopra potrebbe essere (a seconda del sistema operativo):

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.


❮ Riferimento alla stringa PHP