Position actuelle: Accueil> Catégories de fonctions> crypt

crypt

Hachage de cordes unidirectionnel
Nom:crypt
Catégorie:Chaîne
Langage de programmation:php
Description en une ligne:Méthode de cryptage à chaîne unidirectionnelle (hachage).

Définition et utilisation

crypt() renvoie une chaîne cryptée à l'aide de l'algorithme DES, Blowfish ou MD5.

La fonction se comporte différemment sur différents systèmes d'exploitation, et certains systèmes d'exploitation prennent en charge plus d'un type d'algorithme. Pendant l'installation, PHP vérifie quels algorithmes sont disponibles et quels algorithmes sont utilisés.

L'algorithme spécifique dépend du format et de la longueur du paramètre de sel . En augmentant le nombre de chaînes générées par une chaîne spécifique en utilisant une méthode de chiffrement spécifique, le sel peut rendre le chiffrement plus sûr.

Voici quelques constantes utilisées avec crypt() . Ces valeurs constantes sont définies par PHP au moment de l'installation.

constante:

[Crypt_salt_length] La longueur de chiffrement par défaut. Utilisez le cryptage des DES standard avec la longueur 2
[Crypt_std_des] Le hash basé sur l'algorithme DES standard utilise deux caractères dans le caractère "./0-9a-za-z" comme valeur de sel. L'utilisation de caractères illégaux dans les valeurs de sel entraînera l'échec de Crypt ().
[Crypt_ext_des] Hachage étendu basé sur l'algorithme DES. Une chaîne avec une valeur de sel de 9 caractères se compose de 1 soulignement suivie d'un cycle de 4 octets et d'une valeur de sel de 4 octets. Ils sont codés en caractères imprimables, chaque personnage a 6 bits, avec les bits les moins importants préférés. 0 à 63 sont codés comme "./0-9A-ZA-Z". L'utilisation de caractères illégaux dans les valeurs de sel entraînera l'échec de Crypt ().
[Crypt_md5] Le hachage MD5 utilise une valeur de sel de corde à 12 caractères à partir de 1 $.
[Crypt_blowfish] L'algorithme Blowfish utilise la valeur de sel suivante: "2a $ $", un paramètre de coût à deux bits, "$" et une chaîne 64 bits composée de caractères dans "./0-9a-za-z". L'utilisation de caractères en dehors de cette plage dans une valeur de sel entraînera le renvoi de Crypt () une chaîne vide. Le paramètre de coût à deux bits est un logarithme avec le nombre de boucles à la base 2, et sa plage est de 04-31. Le dépassement de cette plage entraînera l'échec de Crypt ().
Crypte_sha256 L'algorithme SHA-256 a haché à l'aide d'une valeur de sel de corde à 16 caractères commençant par 5 $. Si la chaîne de valeur de sel commence par "Rounds = <n> $", la valeur numérique de n sera utilisée pour spécifier le nombre d'exécutions de la boucle de hachage, ce qui ressemble beaucoup au paramètre de coût de l'algorithme de Blowfish. Le nombre de boucles par défaut est de 5000, le minimum est de 1000 et le maximum est de 999 999 999. N En dehors de cette plage sera converti à la valeur la plus proche.
Crypt_sha512 L'algorithme SHA-512 utilise une valeur de sel de chaîne de 16 caractères à partir de 6 $ pour le hachage. Si la chaîne de valeur de sel commence par "Rounds = <n> $", la valeur numérique de n sera utilisée pour spécifier le nombre d'exécutions de la boucle de hachage, ce qui ressemble beaucoup au paramètre de coût de l'algorithme de Blowfish. Le nombre de boucles par défaut est de 5000, le minimum est de 1000 et le maximum est de 999 999 999. N En dehors de cette plage sera converti à la valeur la plus proche.

Sur les systèmes où cette fonction prend en charge plusieurs algorithmes, si la constante ci-dessus est prise en charge, elle est définie sur "1", sinon elle est définie sur "0".

Remarque: il n'y a pas de fonction de décryptage correspondant. crypt() utilise un algorithme unidirectionnel.

Exemple

Dans cet exemple, nous testerons différents algorithmes:

 <? Php
// Sel à deux caractéristiques
if ( crypt_std_des == 1 )
{
Echo "Standard DES:" . crypte ( «quelque chose» , «st» ) . "\ n <br>" ;
}
autre
{
echo "standard des non pris en charge. \ n <br>" ;
}

// 4 caractères sel
if ( crypt_ext_des == 1 )
{
Echo "Extended DES:" . crypte ( 'quelque chose' , '_s4..some' ) . "\ n <br>" ;
}
autre
{
echo "étendu des non pris en charge. \ n <br>" ;
}

// 12 caractères commençant par 1 $
if ( crypt_md5 == 1 )
{
Echo "MD5:" . crypte ( «quelque chose» , «1 $ quelque chose de $» ) . "\ n <br>" ;
}
autre
{
echo "md5 non pris en charge. \ n <br>" ;
}

// Salt commençant par 2A $. Paramètres de coût des doubles nombres: 09. 22 caractères
if ( crypt_blowfish == 1 )
{
Echo "Blowfish:" . crypt ( «quelque chose» , «2a $ $ 09 $ anExamplestringforsalt $» ) . "\ n <br>" ;
}
autre
{
écho "Blowfish des non soutenus. \ n <br>" ;
}

// Sel de 16 caractères commençant par 5 $. Le nombre par défaut de périmètres est de 5000.
if ( crypt_sha256 == 1 )
{
Echo "Sha-256:" . crypt ( «quelque chose» , «5 $ rounds = 5000 $ anExamplestringforsalt $» ) . "\ n <br>" ; }
autre
{
echo "sha-256 non pris en charge. \ n <br>" ;
}

// Sel de 16 caractères commençant par 5 $. Le nombre par défaut de périmètres est de 5000.
if ( crypt_sha512 == 1 )
{
Echo "SHA-512:" . crypt ( «quelque chose» , «6 $ rounds = 5000 $ anExamplestringForsalt $» ) ;
}
autre
{
Echo "SHA-512 non pris en charge". ;
}
?>

La sortie du code ci-dessus (selon le système d'exploitation):

 STANDARD DES: STQADD7ZLBBYI
DES étendu: _S4..Someqxidlbptuu6
MD5: 1 $ Somethin 4 $ nzkruly6r7k7.rdeoz0w.
Blowfish: 2A $ $ $
SHA-256: 5 $ Rounds = 5000 $ anexamplestringf $ kirctqsxo2wrpg5ag / hs4jti4pmonkqugwfxlvy9vu9
SHA-512: 6 $ Rounds = 5000 $ anexamplestringf $ oo0skoadufxkqxjpwzo05wgrhg0dhuapbaou /
onbgpceklf / 7ovm5wn6an0w2vwuga0o24olzgqpp1xki6llq0.

grammaire

 crypte ( str , sel )
paramètre décrire
Str Requis. Spécifie la chaîne à coder.
sel Facultatif. Utilisé pour augmenter le nombre de caractères codés pour rendre l'encodage plus sécurisé. Si le paramètre de sel n'est pas fourni, PHP en générera un aléatoire à chaque fois que la fonction est appelée.