function bigcrypt($action, $src, $key) {
$dest = '';
$keylen = strlen($key) - 1;
$keypos = -1;
$range = 256;
$srcpos = 0;
$srcasc = 0;
if($action == "E") {
$offset = rand(0, $range);
$dest = sprintf("%02X", $offset);
for ($srcpos = 0; $srcpos < strlen($src); $srcpos++) {
$srcasc = (((ord(substr($src, $srcpos, 1))) + $offset) % 255);
if ($keypos < $keylen) {
$keypos = $keypos + 1;
}
else {
$keypos = 0;
}
$srcasc = $srcasc ^ (ord(substr($key, $keypos, 1))); //$srcasc xor(ord(substr($key, $keypos, 1)));
$dest = $dest.sprintf('%02X', $srcasc);
$offset = $srcasc;
}
}
if($action == "D") {
$offset = hexdec(substr($src, 0, 2));
$srcpos = 2;
do {
$srcasc = hexdec(substr($src, $srcpos, 2));
if ($keypos < $keylen) {
$keypos = $keypos + 1;
}
else {
$keypos = 0;
}
$tmpsrcasc = $srcasc ^ (ord(substr($key, $keypos, 1)));
if($tmpsrcasc <= $offset) {
$tmpsrcasc = 255 + $tmpsrcasc - $offset;
}
else {
$tmpsrcasc = $tmpsrcasc - $offset;
}
$dest = $dest.chr($tmpsrcasc);
$offset = $srcasc;
$srcpos = $srcpos + 2;
} while($srcpos < strlen($src));
}
return $dest;
}
$string = "Dark";
$cript = bigcrypt("E", $string, "dark");
$decript = bigcrypt("D", $cript, "dark");
echo "Vou criptografar $string
";
echo "Texto criptografado: ".$cript."
";
echo "Texto descriptografado: ".$decript."
";
?>