I get bored last night and wrote a script that uses xor for encrypt-
decrypt, however it woks fine under linux 2.6.25, text and documents
are ok, but fails on compressed files *.jpg, *.pdf , etc . I didn't
test script on windows.
Here is the code, please send me your views.
<?php
/* Mother Eye Chipper with PHP :), Licence:GPL,
Author: Barış ÇUHADAR
Prepared to use in Console,
usage: "for encryption: php chipper.php -e <key<file>"
"for decryption: php chipper.php -d <key<file>" */
echo "A Basic Encryption & Decryption Program\n";
if(isset($argv[1]) && isset($argv[2]) && is_file($argv[3]) && $argv[3]!
=$_SERVER['PHP_SELF'])
{
$process = $argv[1];
$key = $argv[2];
$file = $argv[3];
if($process == "-e")
{
encrypt_file($file,$key);
}
else if($process == "-d")
{
decrypt_file($file,$key);
}
}
else
{
if($argc < 4)
echo "missing parameters\n \tdefault usage: php chipper.php [-e/-d]
<key<filename>\n";
else if(!is_file($argv[3]))
echo "file " . $argv[3] . " can not be found or is not a file\n";
else if($argv[3]==$_SERVER['PHP_SELF'])
echo "trying to encrypt own file\n";
else echo "unfortunately program is fubar\n";
}
/************************************************** **/
/* encryption begins */
function encrypt_file($file,$key)
{
$k = 0;
$fp_r = fopen($file,"rb");
$cont = fread($fp_r,12);
if($cont == "encrypted_so")
{
fclose($fp_r);
die("file is encrypted! can not be encrypted again!
\n");
}
while(!feof($fp_r))
{
$foo = fread($fp_r,65536);
for($i = 0; $i < strlen($foo); $i++)
{
$r[$i] = $foo[$i] ^ $key[$k];
if($k==sizeof($key))
$k = 0;
$k++;
}
$fp_w = fopen($file . "_temp","a");
/* encrypted content is being written on file*/
fwrite($fp_w,"encrypted_so");
for($i = 0; $i < sizeof($r); $i++)
fwrite($fp_w,$r[$i]);
fclose($fp_w);
$foo=null;
$k=0;
}
fclose($fp_r);
unlink($file);
rename($file . "_temp",$file);
echo "Encryption made successfully!\n";
}
/************************************************** **/
/* decryption */
function decrypt_file($file,$key)
{
$k = 0;
$fp_r = fopen($file,"rb");
$cont = fread($fp_r,12);
if($cont != "encrypted_so")
{
fclose($fp_r);
die("file is not encrypted! so can not
be decrypted..\n");
}
while(!feof($fp_r))
{
$r = fread($fp_r,65536);
for($i = 0; $i < strlen($r); $i++)
{
$foo[$i] = $r[$i] ^ $key[$k];
if($k==sizeof($key))
$k =0;
$k++;
}
/* decrypted content is being written on file */
$fp_w = fopen($file . "_temp","a");
for($i = 0; $i < sizeof($foo); $i++)
fwrite($fp_w,$foo[$i]);
fclose($fp_w);
}
fclose($fp_r);
unlink($file);
rename($file . "_temp",$file);
echo "Decryption made successfully!\n";
}
?>