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歡迎您...