php加密解密

2021-09-25 13:58:03 字數 2809 閱讀 1280

php可逆加解密

1、位運算

知識點:

$a & $b and(按位與) 將把 $a 和 $b 中都為 1 的位設為 1。

$a | $b or(按位或) 將把 $a 和 $b 中任何乙個為 1 的位設為 1。

$a ^ $b xor(按位異或) 將把 $a 和 $b 中乙個為 1 另乙個為 0 的位設為 1。

~ $a not(按位取反) 將 $a 中為 0 的位設為 1,反之亦然。

$a << $b shift left(左移) 將 $a 中的位向左移動 $b 次(每一次移動都表示「乘以 2」)。

$a >> $b shift right(右移) 將 $a 中的位向右移動 $b 次(每一次移動都表示「除以 2」)。

位移在 php 中是數**算。向任何方向移出去的位都被丟棄。左移時右側以零填充,符號位被移走意味著正負號不被保留。右移時左側以符號位填充,意味著正負號被保留。

如果想加密字串,可對字串的每一位執行ord()函式轉換成ascii,再加密

按位異或特點:兩次異或同乙個數最後結果不變

例如 define("div",3);

$str = '100000000';

$str = $str << pi;

var_dump($str);

$str = $str >> pi;

var_dump($str);

$a = ord('q');

$b = 8888;

$c = $a ^ $b;

var_dump($c);

$d = $c ^ $b;

var_dump(chr($d));// q

以下是一些方法:

----------------------------------------

逐位改變增量

/*** 系統加密方法

* @param string $data 要加密的字串

* @param string $key 加密金鑰

* @param int $expire 過期時間 單位 秒

* return string

* @author 麥當苗兒 */

public static function think_encrypt($data, $key = '', $expire = 0)

$str = sprintf('%010d', $expire ? $expire + time():0);

for ($i = 0; $i < $len; $i++)

return str_replace(array('+','/','='),array('-','_',''),base64_encode($str));

}/**

* 系統解密方法

* @param string $data 要解密的字串 (必須是think_encrypt方法加密的字串)

* @param string $key 加密金鑰

* return string

* @author 麥當苗兒 */

public static function think_decrypt($data, $key = '')

$data = base64_decode($data);

$expire = substr($data,0,10);

$data = substr($data,10);

if($expire > 0 && $expire < time())

$x = 0;

$len = strlen($data);

$l = strlen($key);

$char = $str = '';

for ($i = 0; $i < $len; $i++)

for ($i = 0; $i < $len; $i++) else

} else

}

$str = 'abcdef';

$key = 'www.helloweba.com';

$encode = authcode($str,'encode',$key,0); //加密

echo $encode;

echo php_eol;

echo authcode($encode,'decode',$key,0); //解密

----------------------------------------

//函式encrypt($string,$operation,$key)中$string:需要加密解密的字串;$operation:判斷是加密還是解密,e表示加密,d表示解密;$key:密匙。

function encrypt($string,$operation,$key='')

for($j=$i=0;$i<256;$i++)

for($a=$j=$i=0;$i<$string_length;$i++)

if($operation=='d')else

}else

}

$str = 'abc';

$key = 'www.helloweba.com';

$token = encrypt($str, 'e', $key);

echo '加密:'.encrypt($str, 'e', $key);

echo '解密:'.encrypt($str, 'd', $key);

----------------------------------------

PHP加密解密

加密 function string2secret str 解密 function secret2string sec echo secret2string string2secret 11111111111111111 顯示結果是11111111111111111 echo string2secr...

PHP 加密 解密

由於出於安全考慮,引數傳遞的時候需要進行加密和解密,乙個比較簡單的方法是直接使用php中的函式mcrypt encrypt mcrypt decrypt,乙個加密,乙個解密,但是問題又出現了,這個加密過程中會產生一些使url混亂的符號,於是在加密後對加密字元再進行一次處理,然後多了一一次解析 key...

PHP加密解密

php加密和解密函式可以用來加密一些有用的字串存放在資料庫裡,並且通過可逆解密字串,該函式使用了base64和md5加密和解密。複製 如下 function encryptdecrypt key,string,decrypt else 使用方法如下 複製 如下 以下是將字串 helloweba歡迎您...