note 89395 deleted from function.header by danbrown

From: Date: Sun, 08 Mar 2009 15:40:53 +0000
Subject: note 89395 deleted from function.header by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-151630@lists.php.net to get a copy of this message
Note Submitter: Jamesb (axel _at_ james-b _dot_ ch ) ---- Here is a php script I wrote to stream a file and crypt it with a xor operation on the bytes and with a key : <?php /* You can use this code as you want ! Enjoy */ // Stream files and encrypt the data on-the-fly // Settings // -- File to stream $file = "input.mp3"; // -- Reading buffer $bufferlength = 3840; // -- Key in hex $keychar = "9cdfb439c7876e703e307864c9167a15"; // Function: Convertion hex key in a string into binary function hex2bin($h) { if (!is_string($h)) return null; $r = array(); for ($a=0; ($a*2)<strlen($h); $a++) { //$r.=chr(hexdec($h{$a}.$h{($a+1)})); $r[$a] = (binary) (hexdec($h[2*$a].$h[(2*$a+1)])); } return $r; } // Headers $headers = ""; $headers .= "Content-Type: application/octet-stream; "; $headers .= "Content-Length: " . filesize($file) ."; "; $headers .= "filename=\"".$file."\"; "; header($headers); flush(); // this doesn't really matter. // Convert key and set the size of the key $key = hex2bin($keychar); $keylength = strlen($key); // Opening the file in read-only $fp = fopen($file, "r"); while (!feof($fp)) { // Read a buffer size of the file $buffer = fread($fp, $bufferlength); $j=0; for ($i=0; $i < $bufferlength; $i++) { // The key is read in loop to crypt the whole file if ($i%$keylength == 0) { $j=0; } // Apply a xor operation between the key and the file to crypt // This operation eats a lots of CPU time (Stream at 1MiB/s on my server; Intel E2180) $bufferE[$i] = $buffer[$i]^$key[$j]; // Send the encrypted data echo $bufferE[$i]; // Clean the memory $bufferE[$i] = ""; $j++; } flush(); // this is essential for large downloads } // Close the file and it's finished fclose($fp); ?> I hope this will be helpful to someone.

« previous php.notes (#151630) next »