1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
<?php
/**
* The Cipher_rc4:: class implements the Cipher interface encryption data
* using the RC4 encryption algorthim. This class uses the PEAR Crypt_RC4
* class to do the encryption.
*
* $Horde: framework/Cipher/Cipher/rc4.php,v 1.4.12.7 2006/01/01 21:28:10 jan Exp $
*
* Copyright 2002-2006 Mike Cochrane <mike@graftonhall.co.nz>
*
* See the enclosed file COPYING for license information (LGPL). If you
* did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
*
* @author Mike Cochrane <mike@graftonhall.co.nz>
* @since Horde 2.2
* @package Horde_Cipher
*/
class Horde_Cipher_rc4 extends Horde_Cipher {
/**
* Pointer to a PEAR Crypt_rc4 object
*
* @var array
*/
var $_cipher = array();
/**
* Constructor
*/
function Horde_Cipher_rc4($params = null)
{
require_once 'Crypt/Rc4.php';
$this->_cipher = &new Crypt_Rc4();
}
/**
* Set the key to be used for en/decryption.
*
* @param string $key The key to use.
*/
function setKey($key)
{
$this->_cipher->key($key);
}
/**
* Return the size of the blocks that this cipher needs.
*
* @return integer The number of characters per block.
*/
function getBlockSize()
{
return 8;
}
/**
* Encrypt a block of data.
*
* @param string $block The data to encrypt.
* @param string $key The key to use.
*
* @return string The encrypted output.
*/
function encryptBlock($block, $key = null)
{
if (!is_null($key)) {
$this->setKey($key);
}
// Make a copy of the cipher as it destroys itself during a crypt
$cipher = $this->_cipher;
$cipher->crypt($block);
return $block;
}
/**
* Decrypt a block of data.
*
* @param string $block The data to decrypt.
* @param string $key The key to use.
*
* @return string The decrypted output.
*/
function decryptBlock($block, $key = null)
{
if (!is_null($key)) {
$this->setKey($key);
}
// Make a copy of the cipher as it destroys itself during a
// crypt.
$cipher = $this->_cipher;
$cipher->decrypt($block);
return $block;
}
}
|