PHP 教程
crypt() 函數(shù)返回使用 DES、Blowfish 或 MD5 算法加密的字符串。
在不同的操作系統(tǒng)上,該函數(shù)的行為不同,某些操作系統(tǒng)支持一種以上的算法類型。在安裝時(shí),PHP 會(huì)檢查什么算法可用以及使用什么算法。
確切的算法依賴于 salt 參數(shù)的格式和長(zhǎng)度。salt 可以通過增加由一個(gè)特定字符串與一個(gè)特定的加密方法生成的字符串的數(shù)量來(lái)使得加密更安全。
這里有一些和 crypt() 函數(shù)一起使用的常量。這些常量值是在安裝時(shí)由 PHP 設(shè)置的。
常量:
在該函數(shù)支持多種算法的系統(tǒng)上,上面的常量如果支持則設(shè)置為 "1",否則設(shè)置為 "0"。
注釋:沒有相應(yīng)的解密函數(shù)。crypt() 函數(shù)使用一種單向算法。
參數(shù) | 描述 |
---|---|
str | 必需。規(guī)定要編碼的字符串。 |
salt | 可選。用于增加被編碼字符數(shù)目的字符串,以使編碼更加安全。如果未提供 salt 參數(shù),則每次調(diào)用該函數(shù)時(shí)會(huì)隨機(jī)生成一個(gè)。 |
返回值: | 返回加密字符串,如果失敗則返回一個(gè)小于 13 個(gè)字符并保證不同于 salt 的字符串。 |
---|---|
PHP 版本: | 4+ |
更新日志: | 在 PHP 5.3.7 中,新增了 $2x$ 和 $2y$ Blowfish 模式,用來(lái)處理潛在的高位攻擊。 在 PHP 5.3.2 中,新增了常量 SHA-256 和 SHA-512。 自 PHP 5.3.2 起,Blowfish 在無(wú)效的循環(huán)將返回 "failure" 字符串("*0" 或 "*1"),而不是后退到 DES。 自 PHP 5.3.0 起,PHP 自帶 MD5 加密實(shí)現(xiàn)、標(biāo)準(zhǔn) DES 實(shí)現(xiàn)、擴(kuò)展 DES 實(shí)現(xiàn)以及 Blowfish 算法。如果系統(tǒng)不支持上述的算法,將使用 PHP 自帶的算法實(shí)現(xiàn)。 |
利用 htpasswd 進(jìn)行 crypt() 加密:
在本實(shí)例中,我們以不同散列類型使用:
上面的代碼輸出如下(取決于操作系統(tǒng)):
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