PHP內(nèi)置加密函數(shù)詳解
Md5()加密算法
方式: 單向加密
語(yǔ)法: md5(string $str [, bool $raw_output = false])
$str:原始字符串
$raw_output:如果可選的raw_output被設(shè)置為true, 那么md5報(bào)文摘要將以16字節(jié)長(zhǎng)度的原始二進(jìn)制格式返回. 返回以32位字符十六進(jìn)制數(shù)字形式返回散列值
md5二次加密:md5(md5($string, true))
Crypt()加密算法
方式: 單向加密
語(yǔ)法: string crypt(string $str[, string $salt]) , 返回一個(gè)基于標(biāo)準(zhǔn)UNIX DES算法或系統(tǒng)上其它可用的替代算法的三列字符串
$str: 需要加密的明文
$salt: 加密時(shí)的干擾串,是編碼更安全
注意: 如果加密時(shí)沒有加上這個(gè)$salt參數(shù), 將隨機(jī)生成一個(gè)干擾串, 否則刷新加密秘文不變
算法常量:
[CRYPT_SALT_LENGTH]
默認(rèn)的加密長(zhǎng)度。使用標(biāo)準(zhǔn)的 DES 加密,長(zhǎng)度為 2
[CRYPT_STD_DES]
基于標(biāo)準(zhǔn) DES 算法的散列使用 "./0-9A-Za-z" 字符中的兩個(gè)字符作為鹽值。在鹽值中使用非法的字符將導(dǎo)致 crypt() 失敗。
[CRYPT_EXT_DES]
擴(kuò)展的基于 DES 算法的散列。其鹽值為 9 個(gè)字符的字符串,由 1 個(gè)下劃線后面跟著 4 字節(jié)循環(huán)次數(shù)和 4 字節(jié)鹽值組成。它們被編碼成可打印字符,每個(gè)字符 6 位,有效位最少的優(yōu)先。0 到 63 被編碼為 "./0-9A-Za-z"。在鹽值中使用非法的字符將導(dǎo)致 crypt() 失敗。
[CRYPT_MD5]
MD5 散列使用一個(gè)以 $1$ 開始的 12 字符的字符串鹽值。
[CRYPT_BLOWFISH]
Blowfish 算法使用如下鹽值:“$2a$”,一個(gè)兩位 cost 參數(shù),“$” 以及 64 位由 “./0-9A-Za-z” 中的字符組合而成的字符串。在鹽值中使用此范圍之外的字符將導(dǎo)致 crypt() 返回一個(gè)空字符串。兩位 cost 參數(shù)是循環(huán)次數(shù)以 2 為底的對(duì)數(shù),它的范圍是 04-31,超出這個(gè)范圍將導(dǎo)致 crypt() 失敗。
CRYPT_SHA256
SHA-256 算法使用一個(gè)以 $5$ 開頭的 16 字符字符串鹽值進(jìn)行散列。如果鹽值字符串以 “rounds=<N>$” 開頭,N 的數(shù)字值將被用來(lái)指定散列循環(huán)的執(zhí)行次數(shù),這點(diǎn)很像 Blowfish 算法的 cost 參數(shù)。默認(rèn)的循環(huán)次數(shù)是 5000,最小是 1000,最大是 999,999,999。超出這個(gè)范圍的 N 將會(huì)被轉(zhuǎn)換為最接近的值。
CRYPT_SHA512
SHA-512 算法使用一個(gè)以 $6$ 開頭的 16 字符字符串鹽值進(jìn)行散列。如果鹽值字符串以 “rounds=<N>$” 開頭,N 的數(shù)字值將被用來(lái)指定散列循環(huán)的執(zhí)行次數(shù),這點(diǎn)很像 Blowfish 算法的 cost 參數(shù)。默認(rèn)的循環(huán)次數(shù)是 5000,最小是 1000,最大是 999,999,999。超出這個(gè)范圍的 N 將會(huì)被轉(zhuǎn)換為最接近的值。
例:
if(CRYPT_MD5){ echo "MD5加密:".crypt('something','$1$somethin$'); }
Sha1()加密算法
方式: 單向加密
語(yǔ)法: string sha1(string $str [, bool $raw_output=false]) 計(jì)算字符串的sha1散列值
$str: 加密的字符串
$raw_output: 如果可選的raw_output參數(shù)被設(shè)置為TRUE, 那么sha1摘要將以20字符長(zhǎng)度的原始格式返回, 否則返回值是一個(gè)40字符串長(zhǎng)度的十六進(jìn)制數(shù)字.
URL編碼加密技術(shù)
編碼URL字符串: urlencode(string $str)
解碼已編碼的URL字符串: urldeocde(string $str)
編碼規(guī)范: 此字符串中除了-_.之外的所有非字母數(shù)字字符都將被替換成百分號(hào)(%)后跟兩位十六進(jìn)制數(shù), 空格則編碼為加號(hào)(+)
按照RFC1738對(duì)URL進(jìn)行編碼: rawurlencode(string $str) : 返回從字符串,把空格編碼為%20
對(duì)已編碼的字符串進(jìn)行解碼: rawurldecode(string $str) : 返回字符串, 此字符串中百分號(hào)%后跟兩位十六進(jìn)制的序列豆將被替換成原義字符
urlencode和rawurlencode的區(qū)別只在于空格.
Base64編碼加密技術(shù)
使用base64對(duì)data進(jìn)行編碼: base64_encode(string $data)
對(duì)使用MIME base64編碼的數(shù)據(jù)進(jìn)行解碼: base64_decode(string $data[, $strict=false]) ; $strict:如果輸入的數(shù)據(jù)超出了base64的字母表,則返回false.
base64編碼的圖片還可以直接放在<img>標(biāo)簽中顯示:
<img src="data:image/jpeg;base64,編碼字符串" alt=""/>
<img src="data:;base64,編碼字符串" alt=""/>
信息加密技術(shù):
1 單項(xiàng)散列加密:
指通過(guò)不同輸入的長(zhǎng)度的信息進(jìn)行散列計(jì)算, 得到固定長(zhǎng)度的輸出, 這個(gè)散列計(jì)算過(guò)程是單向的, 既不能對(duì)固定長(zhǎng)度的輸出進(jìn)行計(jì)算從而活兒輸出信息.
2 對(duì)稱散列加密
指加密和解密的密匙是同一個(gè)密匙或者可以互相推算.
3 非對(duì)稱散列加密
非對(duì)稱加密和解密的密匙不是同一個(gè)密匙, 其中一個(gè)對(duì)外公開, 被稱作公鑰, 另一個(gè)只有所有者知道.
- VBScript版的PHP extract()函數(shù)
- PHP中extract()函數(shù)的定義和用法
- PHP中extract()函數(shù)的妙用分析
- PHP extract 將數(shù)組拆分成多個(gè)變量的函數(shù)
- PHP中的extract的作用分析
- php的socket編程詳解
- php PDO異常處理詳解
- php.ini中date.timezone設(shè)置詳解
- 淺析php中array_map和array_walk的使用對(duì)比
- php 二維數(shù)組時(shí)間排序?qū)崿F(xiàn)代碼
- php socket通信簡(jiǎn)單實(shí)現(xiàn)
- php 數(shù)組處理函數(shù)extract詳解及實(shí)例代碼
相關(guān)文章
WordPress中轉(zhuǎn)義HTML與過(guò)濾鏈接的相關(guān)PHP函數(shù)使用解析
這篇文章主要介紹了WordPress中轉(zhuǎn)義Html與過(guò)濾鏈接的相關(guān)函數(shù)使用解析,分別為esc_html()函數(shù)和esc_url()函數(shù)的用法,需要的朋友可以參考下2015-12-12php采用curl訪問(wèn)域名返回405 method not allowed提示的解決方法
這篇文章主要介紹了php采用curl訪問(wèn)域名返回405 method not allowed提示的解決方法,需要的朋友可以參考下2014-06-06使用php統(tǒng)計(jì)字符串中中英文字符的個(gè)數(shù)
本篇文章是對(duì)使用php統(tǒng)計(jì)字符串中中英文字符的個(gè)數(shù)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06完美利用Yii2微信后臺(tái)開發(fā)的系列總結(jié)
Yii2是一個(gè)高性能,基于組件的 PHP 框架,這篇文章詳細(xì)的給大家介紹了利用Yii2開發(fā)微信后臺(tái)。我們一起來(lái)看看。2016-07-07php中instanceof 與 is_a()區(qū)別分析
總的來(lái)說(shuō)php中instanceof 與 is_a()功能是一樣的,不同的是由于PHP的版本不同,部分PHP版本舍棄了is_a() 下面我們來(lái)具體分析下吧。2015-03-03PHP5.3連接Oracle客戶端及PDO_OCI模塊的安裝方法
這篇文章主要介紹了PHP5.3連接Oracle客戶端及PDO_OCI模塊的安裝方法,結(jié)合實(shí)例形式詳細(xì)分析了php5.3環(huán)境下PDO_OCI模塊的安裝方法,并給出了連接Oracle測(cè)試程序,需要的朋友可以參考下2016-05-05php之curl實(shí)現(xiàn)http與https請(qǐng)求的方法
這篇文章主要介紹了php之curl實(shí)現(xiàn)http與https請(qǐng)求的方法,分別講述了PHP訪問(wèn)http網(wǎng)頁(yè)與訪問(wèn)https網(wǎng)頁(yè)的實(shí)例,以及相關(guān)的注意事項(xiàng),需要的朋友可以參考下2014-10-10