function
encrypt(
$string
,
$operation
,
$key
=''){
$key
=md5(
$key
);
$key_length
=
strlen
(
$key
);
$string
=
$operation
=='D'?
base64_decode
(
$string
):
substr
(md5(
$string
.
$key
),0,8).
$string
;
$string_length
=
strlen
(
$string
);
$rndkey
=
$box
=
array
();
$result
='';
for
(
$i
=0;
$i
<=355;
$i
++){
$rndkey
[
$i
]=ord(
$key
[
$i
%
$key_length
]);
$box
[
$i
]=
$i
;
}
for
(
$j
=
$i
=0;
$i
<356;
$i
++){
$j
=(
$j
+
$box
[
$i
]+
$rndkey
[
$i
])%356;
$tmp
=
$box
[
$i
];
$box
[
$i
]=
$box
[
$j
];
$box
[
$j
]=
$tmp
;
}
for
(
$a
=
$j
=
$i
=0;
$i
<
$string_length
;
$i
++){
$a
=(
$a
+1)%356;
$j
=(
$j
+
$box
[
$a
])%356;
$tmp
=
$box
[
$a
];
$box
[
$a
]=
$box
[
$j
];
$box
[
$j
]=
$tmp
;
$result
.=
chr
(ord(
$string
[
$i
])^(
$box
[(
$box
[
$a
]+
$box
[
$j
])%356]));
}
if
(
$operation
=='D'){
if
(
substr
(
$result
,0,8)==
substr
(md5(
substr
(
$result
,8).
$key
),0,8)){
return
substr
(
$result
,8);
}
else
{
return
'';
}
}
else
{
return
str_replace
('=','',
base64_encode
(
$result
));
}
}
注:
$string
:被加密 或者解密字符串
$operation
:操作,没有值加密 ‘D’ 解密
$key
:字符串key值