(PHP 4, PHP 5, PHP 7)
crypt — 锟斤拷锟斤拷锟街凤拷锟斤拷散锟斤拷
$str
[, string $salt
] ) : stringcrypt() 锟斤拷锟斤拷一锟斤拷锟斤拷锟节憋拷准 UNIX DES 锟姐法锟斤拷系统锟斤拷锟斤拷锟斤拷锟斤拷锟矫碉拷锟斤拷锟斤拷惴拷锟缴拷锟斤拷址锟斤拷锟斤拷锟�
salt
锟斤拷锟斤拷锟角匡拷选锟侥★拷然锟斤拷锟斤拷锟斤拷锟矫伙拷锟�salt
锟侥伙拷锟斤拷crypt()锟斤拷锟斤拷锟斤拷锟斤拷锟侥伙拷锟斤拷锟斤拷锟斤拷锟诫。 php 5.6锟斤拷之锟斤拷陌姹撅拷锟斤拷锟矫伙拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟阶筹拷一锟斤拷 E_NOTICE 锟斤拷锟斤拷拇锟斤拷锟轿拷烁锟斤拷玫陌锟饺拷裕锟斤拷锟饺凤拷锟街革拷锟揭伙拷锟斤拷愎磺匡拷鹊锟斤拷锟街碉拷锟�
password_hash()使锟斤拷锟斤拷一锟斤拷强锟侥癸拷希锟姐法锟斤拷锟斤拷锟斤拷锟斤拷锟姐够强锟斤拷锟斤拷值锟斤拷锟斤拷锟揭伙拷锟皆讹拷锟斤拷锟叫猴拷锟绞碉拷锟街次★拷password_hash()锟斤拷crypt()锟斤拷一锟斤拷锟津单凤拷装锟斤拷锟斤拷锟斤拷锟斤拷全锟斤拷锟斤拷锟叫碉拷锟斤拷锟斤拷锟较o拷锟斤拷荨锟斤拷萍锟绞癸拷锟�password_hash()锟斤拷
锟斤拷些系统支锟街诧拷止一锟斤拷散锟斤拷锟斤拷锟酵★拷实锟斤拷锟较o拷锟斤拷时锟津,伙拷锟斤拷 MD5 锟斤拷锟姐法锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷诒锟阶� DES 锟斤拷锟姐法锟斤拷锟斤拷锟斤拷散锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 5.3 之前锟斤拷PHP 锟节帮拷装时锟斤拷锟斤拷系统锟斤拷 crypt() 锟斤拷锟斤拷锟斤拷锟矫碉拷锟姐法锟斤拷锟斤拷锟矫伙拷锟斤拷峁╋拷锟街碉拷锟絇HP 锟斤拷锟皆讹拷锟斤拷锟斤拷一锟斤拷 2 锟斤拷锟街凤拷锟斤拷DES锟斤拷锟斤拷锟斤拷 12 锟斤拷锟街凤拷锟斤拷MD5锟斤拷锟斤拷锟斤拷值 锟斤拷锟斤拷取锟斤拷锟斤拷 MD5 crypt() 锟侥匡拷锟斤拷锟皆★拷PHP 锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷为 CRYPT_SALT_LENGTH
锟侥筹拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷示锟斤拷锟斤拷散锟斤拷锟斤拷锟斤拷锟斤拷畛わ拷锟斤拷锟斤拷锟街碉拷锟�
锟斤拷锟节憋拷准 DES 锟姐法锟斤拷 crypt() 锟斤拷锟斤拷锟斤拷锟斤拷莸目锟绞嘉伙拷梅锟斤拷锟斤拷锟斤拷锟斤拷址锟斤拷锟斤拷锟街碉拷锟斤拷锟揭仓皇癸拷锟� str
锟侥匡拷始 8 锟斤拷锟街凤拷锟斤拷锟斤拷锟皆革拷锟斤拷锟斤拷锟斤拷锟斤拷同 8 锟斤拷锟街凤拷锟斤拷始锟斤拷锟街凤拷锟斤拷也锟斤拷锟斤拷锟斤拷锟斤拷同锟侥斤拷锟斤拷锟斤拷锟绞癸拷锟斤拷锟斤拷锟酵拷锟斤拷锟街凳憋拷锟斤拷锟�
锟斤拷 crypt() 锟斤拷锟斤拷支锟街讹拷锟斤拷散锟叫碉拷系统锟较o拷锟斤拷锟斤拷某锟斤拷锟斤拷锟斤拷锟斤拷锟接︼拷锟斤拷锟斤拷锟斤拷欠锟斤拷锟矫憋拷锟斤拷锟斤拷为 0 锟斤拷 1锟斤拷
CRYPT_STD_DES
- 锟斤拷锟节憋拷准 DES 锟姐法锟斤拷散锟斤拷使锟斤拷 "./0-9A-Za-z" 锟街凤拷锟叫碉拷锟斤拷锟斤拷锟街凤拷锟斤拷为锟斤拷值锟斤拷锟斤拷锟斤拷值锟斤拷使锟矫非凤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷 crypt() 失锟杰★拷
CRYPT_EXT_DES
- 锟斤拷展锟侥伙拷锟斤拷 DES 锟姐法锟斤拷散锟叫★拷锟斤拷锟斤拷值为 9 锟斤拷锟街凤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷 1 锟斤拷锟铰伙拷锟竭猴拷锟斤拷锟斤拷锟� 4 锟街斤拷循锟斤拷锟斤拷锟斤拷锟斤拷 4 锟街斤拷锟斤拷值锟斤拷伞锟斤拷锟斤拷潜锟斤拷锟斤拷锟缴可达拷印锟街凤拷锟斤拷每锟斤拷锟街凤拷 6 位锟斤拷锟斤拷效位锟斤拷锟劫碉拷锟斤拷锟饺★拷0 锟斤拷 63 锟斤拷锟斤拷锟斤拷为 "./0-9A-Za-z"锟斤拷锟斤拷锟斤拷值锟斤拷使锟矫非凤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷 crypt() 失锟杰★拷
CRYPT_MD5
- MD5 散锟斤拷使锟斤拷一锟斤拷锟斤拷 $1$ 锟斤拷始锟斤拷 12 锟街凤拷锟斤拷锟街凤拷锟斤拷锟斤拷值锟斤拷
CRYPT_BLOWFISH
- Blowfish 锟姐法使锟斤拷锟斤拷锟斤拷锟斤拷值锟斤拷"$2a$"锟斤拷一锟斤拷锟斤拷位 cost 锟斤拷锟斤拷锟斤拷"$" 锟皆硷拷 64 位锟斤拷 "./0-9A-Za-z" 锟叫碉拷锟街凤拷锟斤拷隙锟斤拷傻锟斤拷址锟斤拷锟斤拷锟斤拷锟斤拷锟街碉拷锟绞癸拷么朔锟轿е拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷 crypt() 锟斤拷锟斤拷一锟斤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟斤拷位 cost 锟斤拷锟斤拷锟斤拷循锟斤拷锟斤拷锟斤拷锟斤拷 2 为锟阶的讹拷锟斤拷锟斤拷锟斤拷锟侥凤拷围锟斤拷 04-31锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟轿э拷锟斤拷锟斤拷锟� crypt() 失锟杰★拷
PHP 5.3.7 之前只支锟斤拷 "$2a$" 锟斤拷为锟斤拷值锟斤拷前缀锟斤拷PHP 5.3.7 锟斤拷始锟斤拷锟斤拷锟斤拷锟铰碉拷前缀锟斤拷锟斤拷锟斤拷一锟斤拷锟斤拷Blowfish实锟斤拷锟较的帮拷全锟斤拷锟秸★拷锟斤拷锟皆参匡拷» this document锟斤拷锟剿斤拷锟斤拷锟斤拷锟斤拷锟睫革拷锟侥革拷锟斤拷锟斤拷息锟斤拷锟杰讹拷锟斤拷之锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 PHP 5.3.7锟斤拷之锟斤拷姹撅拷锟斤拷锌锟斤拷锟斤拷锟斤拷锟接︼拷锟绞癸拷锟� "$2y$" 锟斤拷锟斤拷 "$2a$"
CRYPT_SHA256
- SHA-256 锟姐法使锟斤拷一锟斤拷锟斤拷 $5$ 锟斤拷头锟斤拷 16 锟街凤拷锟街凤拷锟斤拷锟斤拷值锟斤拷锟斤拷散锟叫★拷锟斤拷锟斤拷锟街碉拷址锟斤拷锟斤拷锟� "rounds=<N>$" 锟斤拷头锟斤拷N 锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷锟斤拷锟斤拷指锟斤拷散锟斤拷循锟斤拷锟斤拷执锟叫达拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 Blowfish 锟姐法锟斤拷 cost 锟斤拷锟斤拷锟斤拷默锟较碉拷循锟斤拷锟斤拷锟斤拷锟斤拷 5000锟斤拷锟斤拷小锟斤拷 1000锟斤拷锟斤拷锟斤拷锟� 999,999,999锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟轿э拷锟� N 锟斤拷锟结被转锟斤拷为锟斤拷咏锟斤拷锟街碉拷锟�
CRYPT_SHA512
- SHA-512 锟姐法使锟斤拷一锟斤拷锟斤拷 $6$ 锟斤拷头锟斤拷 16 锟街凤拷锟街凤拷锟斤拷锟斤拷值锟斤拷锟斤拷散锟叫★拷锟斤拷锟斤拷锟街碉拷址锟斤拷锟斤拷锟� "rounds=<N>$" 锟斤拷头锟斤拷N 锟斤拷锟斤拷锟斤拷值锟斤拷锟斤拷锟斤拷锟斤拷指锟斤拷散锟斤拷循锟斤拷锟斤拷执锟叫达拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 Blowfish 锟姐法锟斤拷 cost 锟斤拷锟斤拷锟斤拷默锟较碉拷循锟斤拷锟斤拷锟斤拷锟斤拷 5000锟斤拷锟斤拷小锟斤拷 1000锟斤拷锟斤拷锟斤拷锟� 999,999,999锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟轿э拷锟� N 锟斤拷锟结被转锟斤拷为锟斤拷咏锟斤拷锟街碉拷锟�
Note:
锟斤拷 PHP 5.3.0 锟斤拷PHP 锟斤拷锟斤拷锟斤拷锟斤拷锟皆硷拷锟斤拷实锟街o拷锟斤拷锟斤拷锟斤拷系统缺锟斤拷锟斤拷应锟姐法支锟街碉拷时锟斤拷使锟斤拷锟斤拷锟皆硷拷锟斤拷实锟街★拷
str
锟斤拷散锟叫碉拷锟街凤拷锟斤拷锟斤拷
使锟斤拷 CRYPT_BLOWFISH
锟姐法锟斤拷锟斤拷锟斤拷str
锟斤拷锟矫硷拷为一锟斤拷锟筋长72锟斤拷锟街凤拷锟斤拷锟街凤拷锟斤拷锟斤拷
salt
锟斤拷选锟斤拷锟斤拷值锟街凤拷锟斤拷锟斤拷锟斤拷锟矫伙拷锟斤拷峁╋拷锟斤拷惴拷锟轿拷锟斤拷刹锟酵拷锟斤拷惴ㄊ碉拷志锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷艿锟斤拷虏锟斤拷锟皆わ拷系慕锟斤拷锟斤拷锟�
锟斤拷锟斤拷散锟叫猴拷锟斤拷址锟斤拷锟斤拷锟揭伙拷锟斤拷锟斤拷锟� 13 锟街凤拷锟斤拷锟街凤拷锟斤拷锟斤拷锟接讹拷锟斤拷证锟斤拷失锟斤拷时锟斤拷锟斤拷值锟斤拷锟街匡拷锟斤拷锟斤拷
锟斤拷校锟斤拷锟斤拷锟斤拷时锟斤拷应锟斤拷使锟斤拷一锟斤拷锟斤拷锟斤拷锟阶憋拷时锟戒攻锟斤拷锟斤拷锟街凤拷锟斤拷锟饺较猴拷锟斤拷锟斤拷锟饺斤拷crypt()锟斤拷锟斤拷锟斤拷锟街帮拷锟街拷墓锟较o拷锟斤拷锟斤拷锟斤拷锟斤拷目锟侥o拷PHP5.6锟斤拷始锟结供锟斤拷hash_equals()锟斤拷
锟芥本 | 说锟斤拷 |
---|---|
5.6.5 |
When the failure string "*0" is given as the
salt , "*1" will now be returned for consistency
with other crypt implementations. Prior to this version, PHP 5.6 would
incorrectly return a DES hash.
|
5.6.0 |
Raise E_NOTICE security warning if salt is omitted.
|
5.5.21 |
When the failure string "*0" is given as the
salt , "*1" will now be returned for consistency
with other crypt implementations. Prior to this version, PHP 5.5 (and
earlier branches) would incorrectly return a DES hash.
|
5.3.7 | Added $2x$ and $2y$ Blowfish modes to deal with potential high-bit attacks. |
5.3.2 | 锟斤拷锟斤拷 Ulrich Drepper 锟斤拷» 实锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷 SHA-256 锟姐法锟斤拷 SHA-512 锟姐法锟斤拷 crypt锟斤拷 |
5.3.2 | 锟斤拷锟斤拷锟斤拷 Blowfish 锟姐法锟斤拷锟节非凤拷循锟斤拷锟斤拷锟铰碉拷锟斤拷锟解,锟斤拷锟斤拷"失锟斤拷"锟街凤拷锟斤拷锟斤拷"*0" 锟斤拷 "*1"锟斤拷锟斤拷锟斤拷锟斤拷转锟斤拷使锟斤拷 DES 锟姐法锟斤拷 |
5.3.0 | PHP 锟斤拷锟节帮拷锟斤拷锟斤拷锟斤拷锟皆硷拷锟斤拷 MD5 Crypt 实锟街o拷锟斤拷锟斤拷锟斤拷准 DES 锟姐法锟斤拷锟斤拷展锟斤拷 DES 锟姐法锟皆硷拷 Blowfish 锟姐法锟斤拷锟斤拷锟较低橙憋拷锟斤拷锟接︼拷锟绞碉拷郑锟斤拷锟矫� PHP 锟斤拷使锟斤拷锟斤拷锟皆硷拷锟斤拷实锟街★拷 |
Example #1 crypt() 锟斤拷锟斤拷
<?php
$hashed_password = crypt('mypassword'); // 锟皆讹拷锟斤拷锟斤拷锟斤拷值
/* 锟斤拷应锟斤拷使锟斤拷 crypt() 锟矫碉拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟轿拷锟街碉拷锟斤拷锟斤拷锟斤拷锟叫o拷椋拷源锟斤拷锟斤拷锟斤拷锟绞癸拷貌锟酵拷锟斤拷惴拷锟斤拷碌锟斤拷锟斤拷狻o拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷锟斤拷诒锟阶� DES 锟姐法锟斤拷锟斤拷锟斤拷散锟斤拷使锟斤拷 2 锟街凤拷锟斤拷值锟斤拷锟斤拷锟角伙拷锟斤拷 MD5 锟姐法锟斤拷散锟斤拷使锟斤拷 12 锟斤拷锟街凤拷锟斤拷值锟斤拷锟斤拷*/
if (hash_equals($hashed_password, crypt($user_input, $hashed_password))) {
echo "Password verified!";
}
?>
Example #2 锟斤拷锟斤拷 htpasswd 锟斤拷锟斤拷 crypt() 锟斤拷锟斤拷
<?php
// 锟斤拷锟斤拷锟斤拷锟斤拷
$password = 'mypassword';
// 锟斤拷取散锟斤拷值锟斤拷使锟斤拷锟皆讹拷锟斤拷值
$hash = crypt($password);
?>
Example #3 锟皆诧拷同散锟斤拷锟斤拷锟斤拷使锟斤拷 crypt()
<?php
if (CRYPT_STD_DES == 1) {
echo 'Standard DES: ' . crypt('rasmuslerdorf', 'rl') . "\n";
}
if (CRYPT_EXT_DES == 1) {
echo 'Extended DES: ' . crypt('rasmuslerdorf', '_J9..rasm') . "\n";
}
if (CRYPT_MD5 == 1) {
echo 'MD5: ' . crypt('rasmuslerdorf', '$1$rasmusle$') . "\n";
}
if (CRYPT_BLOWFISH == 1) {
echo 'Blowfish: ' . crypt('rasmuslerdorf', '$2a$07$usesomesillystringforsalt$') . "\n";
}
if (CRYPT_SHA256 == 1) {
echo 'SHA-256: ' . crypt('rasmuslerdorf', '$5$rounds=5000$usesomesillystringforsalt$') . "\n";
}
if (CRYPT_SHA512 == 1) {
echo 'SHA-512: ' . crypt('rasmuslerdorf', '$6$rounds=5000$usesomesillystringforsalt$') . "\n";
}
?>
锟斤拷锟斤拷锟斤拷锟教碉拷锟斤拷锟斤拷锟斤拷锟斤拷冢锟�
Standard DES: rl.3StKT.4T8M Extended DES: _J9..rasmBYk8r9AiWNc MD5: $1$rasmusle$rISCgZzpwk3UhDidwXvin0 Blowfish: $2a$07$usesomesillystringfore2uDLvp1Ii2e./U9C8sBjqp8I90dH6hi SHA-256: $5$rounds=5000$usesomesillystri$KqJWpanXZHKq2BOB43TSaYhEWsQ1Lr5QNyPCDH/Tp.6 SHA-512: $6$rounds=5000$usesomesillystri$D4IrlXatmP7rx3P3InaxBeoomnAihCKRVQP22JZ6EY47Wc6BkroIuUUBOov1i.S5KPgErtP/EN5mcO.ChWQW21
Note: 锟斤拷锟斤拷 crypt() 使锟矫碉拷锟角碉拷锟斤拷锟姐法锟斤拷锟斤拷瞬锟斤拷锟斤拷锟� decrypt 锟斤拷锟斤拷锟斤拷