background image

PHP 函数:PHP 可逆加密、解密函数

很多项目的会员系统,都要求要有记住登录功能,在通过 cookies 实现功能是,由于要将
客户信息直接保存到 cookies,如果直接写入 cookies 势必会带来安全隐患,因此通过可逆
加密后再保存到 cookies 相对就安全了

 

函数源码
代码如下:
 

function

 encrypt(

$data

$key

) { 

$prep_code

 = serialize(

$data

); 

$block

 = mcrypt_get_block_size('des', 'ecb'); 

if

 ((

$pad

 = 

$block

 - (

strlen

(

$prep_code

) % 

$block

)) < 

$block

) { 

$prep_code

 .= 

str_repeat

(

chr

(

$pad

), 

$pad

); 

$encrypt

 = mcrypt_encrypt(MCRYPT_DES, 

$key

$prep_code

, MCRYPT_MODE_ECB); 

return

 

base64_encode

(

$encrypt

); 


 

function

 decrypt(

$str

$key

) { 

$str

 = 

base64_decode

(

$str

); 

$str

 = mcrypt_decrypt(MCRYPT_DES, 

$key

$str

, MCRYPT_MODE_ECB); 

$block

 = mcrypt_get_block_size('des', 'ecb'); 

$pad

 = ord(

$str

[(

$len

 = 

strlen

(

$str

)) - 1]); 

if

 (

$pad

 && 

$pad

 < 

$block

 && preg_match('/' . 

chr

(

$pad

) . '{' . 

$pad

 . '}$/', 

$str

)) { 

$str

 = 

substr

(

$str

, 0, 

strlen

(

$str

) - 

$pad

); 

return

 unserialize(

$str

); 


 

 

调用函数
代码如下:
 

$key

 = 'okyo.cn'; 

$data

 = 

array

('id' => 100, 'username' => 'customer', 'password' => 

'e10adc3949ba59abbe56e057f20f883e'); 

$snarr

 = serialize(

$data

); 

$en

 = encrypt(

$data

$key

); 

$de

 = decrypt(

$en

$key

); 

echo

 "加密原型:"; 

print_r(

$data

); 

echo

 "