fonction PHP crypt ()
Définition et utilisation
crypt () renvoie l'utilisation de DES, Blowfish, ou algorithme MD5 pour chiffrer une chaîne.
Sur les systèmes d'exploitation différents, un comportement différent de la fonction, certains systèmes d'exploitation prennent en charge plus d'un type d'algorithme. Lors de l'installation, PHP va vérifier ce qui est disponible et ce que l'algorithme de l'algorithme.
Les algorithmes exacts reposent sur le format et la longueur de l'argument de sel. sel peut rendre le chiffrement plus sûr en augmentant le nombre par une chaîne particulière avec une méthode de cryptage spécifique pour générer la chaîne.
Voici quelques constantes et fonction crypt () est utilisée avec. La valeur constante est fixé à l'installation par le PHP.
Constant:
- [CRYPT_SALT_LENGTH] - par défaut longueur de cryptage. L'utilisation du cryptage standard DES, une longueur de 2
- [CRYPT_STD_DES] - chiffrement DES basé sur une norme de sel de 2 caractères, de l'alphabet "./0-9A-Za-z". Caractères non valides dans le sel va conduire à la fonction a échoué.
- [CRYPT_EXT_DES] - Extended chiffrement basé sur-DES ont sel 9 caractères par un trait de soulignement derrière avec 4 octets de nombre d'itérations et 4 octets de composition de sel. Ceux-ci sont codés comme des caractères imprimables, chacun des 6, le caractère le moins significatif en premier. 0-63 valeur est codé comme "./0-9A-Za-z". Caractères non valides dans le sel va conduire à la fonction a échoué.
- [CRYPT_MD5] - chiffrement MD5 ont sel 12 caractères, en commençant par $ 1 $.
- [Crypt_blowfish] - le chiffrement Blowfish a $ 2a $, 2x $ ou 2y $ $ début de sel, un paramètre de coût à deux chiffres, "$", ainsi que de l'alphabet "./0-9A-Za-z" 22 caractères. Utiliser autre que les caractères de l'alphabet va déclencher la fonction retourne une chaîne de 0 de. "$" Paramètre est le logarithme en base 2 du nombre d'itérations algorithme de hachage Blowfish doit être dans la gamme 04-31. Les valeurs en dehors de cette plage conduiront à la fonction a échoué.
- [CRYPT_SHA_256] - cryptage SHA-256 a sel 16 caractères, en commençant par 5 $ $. Si la chaîne de sel "tours = <N> $" démarre, la valeur numérique de N fois le hachage utilisé pour indiquer la boucle est exécutée, qui est similaire au paramètre de coût Blowfish. Le nombre par défaut de cycles est de 5000, la valeur minimale est de 1000, le maximum est 999.999.999. N est une valeur en dehors de cette plage sera convertie à la valeur limite la plus proche.
- [CRYPT_SHA_512] - cryptage SHA-512 a sel 16 caractères, en commençant par $ 6 $. Si la chaîne de sel "tours = <N> $" démarre, la valeur numérique de N fois le hachage utilisé pour indiquer la boucle est exécutée, qui est similaire au paramètre de coût Blowfish. Le nombre par défaut de cycles est de 5000, la valeur minimale est de 1000, le maximum est 999.999.999. N est une valeur en dehors de cette plage sera convertie à la valeur limite la plus proche.
Sur Cette fonction prend en charge le système de multiples algorithmes, si supporté au-dessus constant est réglé sur "1", sinon il est réglé sur "0"
Note: Il n'y apas de fonction de déchiffrement correspondante. fonction crypt () utilise un algorithme à sens unique.
grammaire
参数 | 描述 |
---|---|
str | 必需。规定要编码的字符串。 |
salt | 可选。用于增加被编码字符数目的字符串,以使编码更加安全。如果未提供 salt 参数,则每次调用该函数时会随机生成一个。 |
détails techniques
Retours: | Retours chiffrés chaîne, si elle ne parvient pas à revenir à moins de 13 caractères et une garantie de la chaîne est différent du sel. |
---|---|
PHP version: | 4+ |
Mise à jour de journal: | En PHP 5.3.7, ajouter les 2x $ $ et 2y $ modes $ Blowfish pour gérer haute attaque potentielle. En PHP 5.3.2, ajouter le SHA-256 constante et SHA-512. Depuis PHP 5.3.2 partir, Blowfish dans une boucle non valide sera de retour "échec" string ( "* 0" ou "1 *"), plutôt que de revenir au DES. A partir de PHP 5.3.0, PHP est livré avec le cryptage MD5 pour atteindre, atteindre la norme DES, Blowfish et étendu algorithme DES à atteindre. Si le système ne prend pas en charge ces algorithmes utilisent propre algorithme de PHP. |
Exemples
exemple 1
Dans cet exemple, nous allons tester différents algorithmes:
// 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 $5$. 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.";
}
?>
Le code ci-dessus génère les éléments suivants (en fonction du système d'exploitation):
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.
PHP Chaîne de référence