日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

PHP實(shí)現(xiàn)加密的幾種方式介紹_PHP教程

編輯Tag賺U幣
教程Tag:暫無Tag,歡迎添加,賺取U幣!

推薦:php使用parse_url和parse_str解析URL
本文主要向大家介紹了php中2個(gè)解析URL的方法(parse_url和parse_str),以及這2種方法的簡(jiǎn)介和用法,十分全面,推薦給有需要的小伙伴們。 PHP中有兩個(gè)方法可以用來解析URL,分別是parse_url和parse_str。 parse_url 解析 URL,返回其組成部分 mixed parse_url ( string

 這篇文章主要介紹了PHP實(shí)現(xiàn)加密的幾種方式,非常全面實(shí)用,都是項(xiàng)目中經(jīng)常需要用到的,需要的朋友可以參考下

   

PHP中的加密方式有如下幾種

1. MD5加密

string md5 ( string $str [, bool $raw_output = false ] )

參數(shù)

str -- 原始字符串。

raw_output -- 如果可選的 raw_output 被設(shè)置為 TRUE,那么 MD5 報(bào)文摘要將以16字節(jié)長(zhǎng)度的原始二進(jìn)制格式返回。

這是一種不可逆加密,執(zhí)行如下的代碼

$password = '123456';
echo md5($password);
得到結(jié)果是e10adc3949ba59abbe56e057f20f883e

2. Crype加密
string crypt ( string $str [, string $salt ] )

crypt() 返回一個(gè)基于標(biāo)準(zhǔn) UNIX DES 算法或系統(tǒng)上其他可用的替代算法的散列字符串。

參數(shù)

str -- 待散列的字符串。

salt -- 可選的鹽值字符串。如果沒有提供,算法行為將由不同的算法實(shí)現(xiàn)決定,并可能導(dǎo)致不可預(yù)料的結(jié)束。

這是也一種不可逆加密,執(zhí)行如下的代碼

 

代碼如下:
$password = '123456';
$salt = "test";// 只取前兩個(gè)
echo crypt($password, $salt);

 

得到的結(jié)果是teMGKvBPcptKo

使用自動(dòng)鹽值的例子如下:

 

代碼如下:
$password = crypt('mypassword'); // 自動(dòng)生成鹽值
/* 你應(yīng)當(dāng)使用 crypt() 得到的完整結(jié)果作為鹽值進(jìn)行密碼校驗(yàn),以此來避免使用不同散列算法導(dǎo)致的問題。(如上所述,基于標(biāo)準(zhǔn) DES 算法的密碼散列使用 2 字符鹽值,但是基于 MD5 算法的散列使用 12 個(gè)字符鹽值。)*/
if (crypt('mypassword', $password) == $password) {
echo "Password verified!";
}

 

執(zhí)行結(jié)果是輸出 Password verified!

以不同散列類型使用 crypt()的例子如下:

 

代碼如下:
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";
}

 

其結(jié)果如下

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
在 crypt() 函數(shù)支持多重散列的系統(tǒng)上,下面的常量根據(jù)相應(yīng)的類型是否可用被設(shè)置為 0 或 1:

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ù)字值將被用來指定散列循環(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ù)字值將被用來指定散列循環(huán)的執(zhí)行次數(shù),這點(diǎn)很像 Blowfish 算法的 cost 參數(shù)。默認(rèn)的循環(huán)次數(shù)是 5000,最小是 1000,最大是 999,999,999。超出這個(gè)范圍的 N 將會(huì)被轉(zhuǎn)換為最接近的值。

3. Sha1加密

string sha1 ( string $str [, bool $raw_output = false ] )

參數(shù)

str -- 輸入字符串。

raw_output -- 如果可選的 raw_output 參數(shù)被設(shè)置為 TRUE,那么 sha1 摘要將以 20 字符長(zhǎng)度的原始格式返回,否則返回值是一個(gè) 40 字符長(zhǎng)度的十六進(jìn)制數(shù)字。

這是也一種不可逆加密,執(zhí)行如下代碼:

$password = '123456';
echo sha1($password);
得到的結(jié)果是7c4a8d09ca3762af61e59520943dc26494f8941b

以上幾種雖然是不可逆加密,但是也可以根據(jù)查字典的方式去解密。如下的地址中就提供了可以將上面的加密結(jié)果解密出來的功能。

http://www.cmd5.com/

那大家是不是加了就算加了密,也沒用啊,其實(shí)不然,只要你的加密足夠復(fù)雜,被破解出的可能性就越小,比如用以上三種加密方式混合加密,之后我會(huì)推薦給大家一個(gè)php的加密庫。

4. URL加密

string urlencode ( string $str )

此函數(shù)便于將字符串編碼并將其用于 URL 的請(qǐng)求部分,同時(shí)它還便于將變量傳遞給下一頁。

分享:在Windows XP下安裝Apache+MySQL+PHP環(huán)境
在整個(gè)wamp環(huán)境搭建中,本質(zhì)的工作如下: 1,配置系統(tǒng)對(duì)php中dll文件能默認(rèn)處于調(diào)用狀態(tài)。 在windos下,對(duì)dll文件系統(tǒng)默認(rèn)處于調(diào)用狀態(tài)的,有兩種采用的方式。 第一種是:把需要調(diào)用dll文件復(fù)制到C:\windows\ system32\(如果是Windows 2000操作系統(tǒng),則為C:\WINNT\ sy

共2頁上一頁12下一頁
來源:模板無憂//所屬分類:PHP教程/更新時(shí)間:2015-03-12
相關(guān)PHP教程