<?php
class
Ender{
private
$enkey
;
private
$rep_char
='#';
public
function
__construct(
$key
=''){
if
(!
$key
){
$this
->enkey=
$key
;
}
}
public
function
set_key(
$key
){
$this
->enkey=
$key
;
}
private
function
keyED(
$txt
,
$encrypt_key
)
{
$encrypt_key
= md5(
$encrypt_key
);
$ctr
=0;
$tmp
=
""
;
for
(
$i
=0;
$i
<
strlen
(
$txt
);
$i
++)
{
if
(
$ctr
==
strlen
(
$encrypt_key
))
$ctr
=0;
$tmp
.=
substr
(
$txt
,
$i
,1) ^
substr
(
$encrypt_key
,
$ctr
,1);
$ctr
++;
}
return
$tmp
;
}
public
function
encrypt(
$txt
,
$key
='')
{
if
(!
$key
){
$key
=
$this
->enkey;
}
srand((double)microtime()*1000000);
$encrypt_key
= md5(rand(0,32000));
$ctr
=0;
$tmp
=
""
;
for
(
$i
=0;
$i
<
strlen
(
$txt
);
$i
++)
{
if
(
$ctr
==
strlen
(
$encrypt_key
))
$ctr
=0;
$tmp
.=
substr
(
$encrypt_key
,
$ctr
,1) .
(
substr
(
$txt
,
$i
,1) ^
substr
(
$encrypt_key
,
$ctr
,1));
$ctr
++;
}
$r
=
base64_encode
(
$this
->keyED(
$tmp
,
$key
));
$r
=
str_replace
('=',
$this
->rep_char,
$r
);
return
$r
;
}
public
function
decrypt(
$txt
,
$key
='')
{
$txt
=
str_replace
(
$this
->rep_char,'=',
$txt
);
$txt
=
base64_decode
(
$txt
);
if
(!
$key
){
$key
=
$this
->enkey;
}
$txt
=
$this
->keyED(
$txt
,
$key
);
$tmp
=
""
;
for
(
$i
=0;
$i
<
strlen
(
$txt
);
$i
++)
{
$md5
=
substr
(
$txt
,
$i
,1);
$i
++;
$tmp
.= (
substr
(
$txt
,
$i
,1) ^
$md5
);
}
return
$tmp
;
}
}