note 87274 added to ref.mcrypt

From: Date: Thu, 27 Nov 2008 12:26:20 +0000
Subject: note 87274 added to ref.mcrypt
Groups: php.notes 
Request: Send a blank email to php-notes+get-147032@lists.php.net to get a copy of this message
The follow function is a implementation of the RC4 cypher algorithm in pure PHP code. The function is used to encrypt and decrypt data. <?php /** * Crypt/decrypt strings with RC4 stream cypher algorithm. * * @param string $key Key * @param string $data Encripted/pure data * @see http://pt.wikipedia.org/wiki/RC4 * @return string */ function rc4($key, $data) { // Store the vectors "S" has calculated static $SC; // Function to swaps values of the vector "S" $swap = create_function('&$v1, &$v2', ' $v1 = $v1 ^ $v2; $v2 = $v1 ^ $v2; $v1 = $v1 ^ $v2; '); $ikey = crc32($key); if (!isset($SC[$ikey])) { // Make the vector "S", basead in the key $S = range(0, 255); $j = 0; $n = strlen($key); for ($i = 0; $i < 255; $i++) { $char = ord($key{$i % $n}); $j = ($j + $S[$i] + $char) % 256; $swap($S[$i], $S[$j]); } $SC[$ikey] = $S; } else { $S = $SC[$ikey]; } // Crypt/decrypt the data $n = strlen($data); $data = str_split($data, 1); $i = $j = 0; for ($m = 0; $m < $n; $m++) { $i = ($i + 1) % 256; $j = ($j + $S[$i]) % 256; $swap($S[$i], $S[$j]); $char = ord($data[$m]); $char = $S[($S[$i] + $S[$j]) % 256] ^ $char; $data[$m] = chr($char); } return implode('', $data); } ?> ---- Server IP: 69.147.83.197 Probable Submitter: 201.28.8.198 ---- Manual Page -- http://www.php.net/manual/en/ref.mcrypt.php Edit -- https://master.php.net/note/edit/87274 Del: integrated -- https://master.php.net/note/delete/87274/integrated Del: useless -- https://master.php.net/note/delete/87274/useless Del: bad code -- https://master.php.net/note/delete/87274/bad+code Del: spam -- https://master.php.net/note/delete/87274/spam Del: non-english -- https://master.php.net/note/delete/87274/non-english Del: in docs -- https://master.php.net/note/delete/87274/in+docs Del: other reasons-- https://master.php.net/note/delete/87274 Reject -- https://master.php.net/note/reject/87274 Search -- https://master.php.net/manage/user-notes.php

« previous php.notes (#147032) next »