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
"