狠狠操网,91中文字幕在线观看,精品久久香蕉国产线看观看亚洲,亚洲haose在线观看

PHP加密和解密函數(shù)

引導(dǎo)語(yǔ):PHP可以執(zhí)行編譯后代碼,編譯可以達(dá)到加密和優(yōu)化代碼運(yùn)行,使代碼運(yùn)行更快。以下是百分網(wǎng)小編為大家整理的PHP加密和解密函數(shù)方法,供大家參考。

代碼如下:

functionpassport_encrypt($str,$key){//加密函數(shù)

srand((double)microtime()*1000000);

$encrypt_key=md5(rand(0,32000));

$ctr=0;

$tmp='';

for($i=0;$i

$ctr=$ctr==strlen($encrypt_key)?0:$ctr;

$tmp.=$encrypt_key[$ctr].($str[$i]^$encrypt_key[$ctr++]);

}

returnbase64_encode(passport_key($tmp,$key));

}

functionpassport_decrypt($str,$key){//解密函數(shù)

$str=passport_key(base64_decode($str),$key);

$tmp='';

for($i=0;$i

$md5=$str[$i];

$tmp.=$str[++$i]^$md5;

}

return$tmp;

}

functionpassport_key($str,$encrypt_key){

$encrypt_key=md5($encrypt_key);

$ctr=0;

$tmp='';

for($i=0;$i

$ctr=$ctr==strlen($encrypt_key)?0:$ctr;

$tmp.=$str[$i]^$encrypt_key[$ctr++];

}

return$tmp;

}

$str='作者:JB51;

$key='jb51';

$encrypt=passport_encrypt($str,$key);

$decrypt=passport_decrypt($encrypt,$key);

echo'原文:',$str."

";

echo'密文:',$encrypt."

";

echo'譯文:',$decrypt."

";

?>

第2篇:PHP url 加密解密函數(shù)代碼方法

復(fù)制代碼代碼如下:

$returnUrl=rawurlencode(base64_encode($returnUrl));//編碼

$returnUrl=parse_str(base64_decode($returnUrl));//解碼或者

$returnUrl=base64_decode($returnUrl);//解碼

//或者

//不知道為何,上面第一種解碼方式返回的是null,求解

$returnUrl=base64_encode($returnUrl);//編碼

$returnUrl=base64_decode($returnUrl);//解碼

這是一種方式,但是是最安全的,因?yàn)橹灰肋@個(gè)原理就可以解開,不過(guò)你的要求不高這樣就可以了.

如果要很安全的那就要用專門的加密類了,嘻嘻.

第3篇:PHP如何使用AES加密算法進(jìn)行數(shù)據(jù)加密和解密

在利用PHP制作項(xiàng)目的時(shí)候經(jīng)常會(huì)使用AES加密算法進(jìn)行數(shù)據(jù)加密和解密,那么AES加密算法是如何進(jìn)行數(shù)據(jù)加密和解密的呢?下面小編為大家解答一下,希望能幫到您!

AES加密是一種高級(jí)加密標(biāo)準(zhǔn),AES加密采用對(duì)稱分組密碼體制,AES加密數(shù)據(jù)塊分組長(zhǎng)度必須為128比特,密鑰長(zhǎng)度可以是128比特、192比特、256比特中的任意一個(gè)(如果數(shù)據(jù)塊及密鑰長(zhǎng)度不足時(shí),會(huì)補(bǔ)齊)。

項(xiàng)目中用到了AES加密和解密數(shù)據(jù),主要用在網(wǎng)絡(luò)請(qǐng)求過(guò)程中對(duì)上傳的參數(shù)進(jìn)行加密,對(duì)從后臺(tái)服務(wù)器獲取的數(shù)據(jù)進(jìn)行解密。

我們可以使用AES加密算法將數(shù)據(jù)加密起來(lái),然后發(fā)送給后端,后端再將接收的數(shù)據(jù)用約定的密鑰將數(shù)據(jù)還原,即解密,Aes算法加密后的數(shù)據(jù)在傳輸過(guò)程中不易被*。

在PHP中,我們需要先確保php的環(huán)境中安裝好了Mcrypt擴(kuò)展。PHP的mcrypt庫(kù)提供了對(duì)多種塊算法的支持,支持CBC,OFB,CFB和ECB密碼模式,mcrypt庫(kù)提供了豐富的函數(shù)使用,有興趣的同學(xué)可以查閱PHP手冊(cè)。

我已經(jīng)將aes加解密封裝成類,方便調(diào)用,在DEMO中可以看到調(diào)用效果。

<?php

classAes

{

private$secrect_key;

publicfunction__construct($secrect_key)

{

$this->secrect_key=$secrect_key;

}

//加密

publicfunctionencrypt($str)

{

$cipher=mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_ECB,'');

$iv=$this->createIv($cipher);

if(mcrypt_generic_init($cipher,$this->pad2Length($this->secrect_key,16),$iv)!=-1){

//PHPpadswithNULLbytesif$contentisnotamultipleoftheblocksize..

$cipherText=mcrypt_generic($cipher,$this->pad2Length($str,16));

mcrypt_generic_deinit($cipher);

mcrypt_module_close($cipher);

returnbin2hex($cipherText);

}

}

publicfunctiondecrypt($str)

{

$padkey=$this->pad2Length($this->secrect_key,16);

$td=mcrypt_module_open(MCRYPT_RIJNDAEL_128,'',MCRYPT_MODE_ECB,'');

$iv=$this->createIv($td);

if(mcrypt_generic_init($td,$padkey,$iv)!=-1){

$p_t=mdecrypt_generic($td,$this->hexToStr($str));

mcrypt_generic_deinit($td);

mcrypt_module_close($td);

return$this->trimEnd($p_t);

}

}

//IV自動(dòng)生成

privatefunctioncreateIv($td)

{

$iv_size=mcrypt_enc_get_iv_size($td);

$iv=mcrypt_create_iv($iv_size,MCRYPT_RAND);

return$iv;

}

//將$text補(bǔ)足$padlen倍數(shù)的長(zhǎng)度

privatefunctionpad2Length($text,$padlen)

{

$len=strlen($text)%$padlen;

$res=$text;

$p=$padlen-$len;

for($i=0;$i<$p;$i++){

$res.=chr($p);

}

return$res;

}

//將解密后多余的長(zhǎng)度去掉(因?yàn)樵诩用艿臅r(shí)候補(bǔ)充長(zhǎng)度滿足block_size的長(zhǎng)度)

privatefunctiontrimEnd($text){

$len=strlen($text);

$c=$text[$len-1];

if(ord($c)<$len){

for($i=$len-ord($c);$i<$len;$i++){

if($text[$i]!=$c){

return$text;

}

}

returnsubstr($text,0,$len-ord($c));

}

return$text;

}

//16進(jìn)制的轉(zhuǎn)為2進(jìn)制字符串

privatefunctionhexToStr($hex){

$bin="";

for($i=0;$i<strlen($hex)-1;$i+=2){

$bin.=chr(hexdec($hex[$i].$hex[$i+1]));

}

return$bin;

}

}

調(diào)用Aes類進(jìn)行加密和解密方法如下:

<?php

$key='MYgGnQE2jDFADSFFDSEWsdD2';//密鑰

$str='abc';//要加密的字符串

$aes=newAes($key);

//加密

echo$aes->encrypt($str);

//解密

echo$aes->decrypt($str);

版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn),該文觀點(diǎn)僅代表作者本人。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請(qǐng)發(fā)送郵件至 yyfangchan@163.com (舉報(bào)時(shí)請(qǐng)帶上具體的網(wǎng)址) 舉報(bào),一經(jīng)查實(shí),本站將立刻刪除