diff options
Diffstat (limited to '3rdparty/Crypt_Blowfish/Blowfish.php')
-rw-r--r-- | 3rdparty/Crypt_Blowfish/Blowfish.php | 317 |
1 files changed, 0 insertions, 317 deletions
diff --git a/3rdparty/Crypt_Blowfish/Blowfish.php b/3rdparty/Crypt_Blowfish/Blowfish.php deleted file mode 100644 index a7b8948f043..00000000000 --- a/3rdparty/Crypt_Blowfish/Blowfish.php +++ /dev/null @@ -1,317 +0,0 @@ -<?php -/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */ - -/** - * Crypt_Blowfish allows for encryption and decryption on the fly using - * the Blowfish algorithm. Crypt_Blowfish does not require the mcrypt - * PHP extension, it uses only PHP. - * Crypt_Blowfish support encryption/decryption with or without a secret key. - * - * - * PHP versions 4 and 5 - * - * LICENSE: This source file is subject to version 3.0 of the PHP license - * that is available through the world-wide-web at the following URI: - * http://www.php.net/license/3_0.txt. If you did not receive a copy of - * the PHP License and are unable to obtain it through the web, please - * send a note to license@php.net so we can mail you a copy immediately. - * - * @category Encryption - * @package Crypt_Blowfish - * @author Matthew Fonda <mfonda@php.net> - * @copyright 2005 Matthew Fonda - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @version CVS: $Id: Blowfish.php,v 1.81 2005/05/30 18:40:36 mfonda Exp $ - * @link http://pear.php.net/package/Crypt_Blowfish - */ - - -require_once 'PEAR.php'; - - -/** - * - * Example usage: - * $bf = new Crypt_Blowfish('some secret key!'); - * $encrypted = $bf->encrypt('this is some example plain text'); - * $plaintext = $bf->decrypt($encrypted); - * echo "plain text: $plaintext"; - * - * - * @category Encryption - * @package Crypt_Blowfish - * @author Matthew Fonda <mfonda@php.net> - * @copyright 2005 Matthew Fonda - * @license http://www.php.net/license/3_0.txt PHP License 3.0 - * @link http://pear.php.net/package/Crypt_Blowfish - * @version @package_version@ - * @access public - */ -class Crypt_Blowfish -{ - /** - * P-Array contains 18 32-bit subkeys - * - * @var array - * @access private - */ - var $_P = array(); - - - /** - * Array of four S-Blocks each containing 256 32-bit entries - * - * @var array - * @access private - */ - var $_S = array(); - - /** - * Mcrypt td resource - * - * @var resource - * @access private - */ - var $_td = null; - - /** - * Initialization vector - * - * @var string - * @access private - */ - var $_iv = null; - - - /** - * Crypt_Blowfish Constructor - * Initializes the Crypt_Blowfish object, and gives a sets - * the secret key - * - * @param string $key - * @access public - */ - function Crypt_Blowfish($key) - { - if (extension_loaded('mcrypt')) { - $this->_td = mcrypt_module_open(MCRYPT_BLOWFISH, '', 'ecb', ''); - $this->_iv = mcrypt_create_iv(8, MCRYPT_RAND); - } - $this->setKey($key); - } - - /** - * Deprecated isReady method - * - * @return bool - * @access public - * @deprecated - */ - function isReady() - { - return true; - } - - /** - * Deprecated init method - init is now a private - * method and has been replaced with _init - * - * @return bool - * @access public - * @deprecated - * @see Crypt_Blowfish::_init() - */ - function init() - { - $this->_init(); - } - - /** - * Initializes the Crypt_Blowfish object - * - * @access private - */ - function _init() - { - $defaults = new Crypt_Blowfish_DefaultKey(); - $this->_P = $defaults->P; - $this->_S = $defaults->S; - } - - /** - * Enciphers a single 64 bit block - * - * @param int &$Xl - * @param int &$Xr - * @access private - */ - function _encipher(&$Xl, &$Xr) - { - for ($i = 0; $i < 16; $i++) { - $temp = $Xl ^ $this->_P[$i]; - $Xl = ((($this->_S[0][($temp>>24) & 255] + - $this->_S[1][($temp>>16) & 255]) ^ - $this->_S[2][($temp>>8) & 255]) + - $this->_S[3][$temp & 255]) ^ $Xr; - $Xr = $temp; - } - $Xr = $Xl ^ $this->_P[16]; - $Xl = $temp ^ $this->_P[17]; - } - - - /** - * Deciphers a single 64 bit block - * - * @param int &$Xl - * @param int &$Xr - * @access private - */ - function _decipher(&$Xl, &$Xr) - { - for ($i = 17; $i > 1; $i--) { - $temp = $Xl ^ $this->_P[$i]; - $Xl = ((($this->_S[0][($temp>>24) & 255] + - $this->_S[1][($temp>>16) & 255]) ^ - $this->_S[2][($temp>>8) & 255]) + - $this->_S[3][$temp & 255]) ^ $Xr; - $Xr = $temp; - } - $Xr = $Xl ^ $this->_P[1]; - $Xl = $temp ^ $this->_P[0]; - } - - - /** - * Encrypts a string - * - * @param string $plainText - * @return string Returns cipher text on success, PEAR_Error on failure - * @access public - */ - function encrypt($plainText) - { - if (!is_string($plainText)) { - PEAR::raiseError('Plain text must be a string', 0, PEAR_ERROR_DIE); - } - - if (extension_loaded('mcrypt')) { - return mcrypt_generic($this->_td, $plainText); - } - - $cipherText = ''; - $len = strlen($plainText); - $plainText .= str_repeat(chr(0),(8 - ($len%8))%8); - for ($i = 0; $i < $len; $i += 8) { - list(,$Xl,$Xr) = unpack("N2",substr($plainText,$i,8)); - $this->_encipher($Xl, $Xr); - $cipherText .= pack("N2", $Xl, $Xr); - } - return $cipherText; - } - - - /** - * Decrypts an encrypted string - * - * @param string $cipherText - * @return string Returns plain text on success, PEAR_Error on failure - * @access public - */ - function decrypt($cipherText) - { - if (!is_string($cipherText)) { - PEAR::raiseError('Chiper text must be a string', 1, PEAR_ERROR_DIE); - } - - if (extension_loaded('mcrypt')) { - return mdecrypt_generic($this->_td, $cipherText); - } - - $plainText = ''; - $len = strlen($cipherText); - $cipherText .= str_repeat(chr(0),(8 - ($len%8))%8); - for ($i = 0; $i < $len; $i += 8) { - list(,$Xl,$Xr) = unpack("N2",substr($cipherText,$i,8)); - $this->_decipher($Xl, $Xr); - $plainText .= pack("N2", $Xl, $Xr); - } - return $plainText; - } - - - /** - * Sets the secret key - * The key must be non-zero, and less than or equal to - * 56 characters in length. - * - * @param string $key - * @return bool Returns true on success, PEAR_Error on failure - * @access public - */ - function setKey($key) - { - if (!is_string($key)) { - PEAR::raiseError('Key must be a string', 2, PEAR_ERROR_DIE); - } - - $len = strlen($key); - - if ($len > 56 || $len == 0) { - PEAR::raiseError('Key must be less than 56 characters and non-zero. Supplied key length: ' . $len, 3, PEAR_ERROR_DIE); - } - - if (extension_loaded('mcrypt')) { - mcrypt_generic_init($this->_td, $key, $this->_iv); - return true; - } - - require_once 'Blowfish/DefaultKey.php'; - $this->_init(); - - $k = 0; - $data = 0; - $datal = 0; - $datar = 0; - - for ($i = 0; $i < 18; $i++) { - $data = 0; - for ($j = 4; $j > 0; $j--) { - $data = $data << 8 | ord($key{$k}); - $k = ($k+1) % $len; - } - $this->_P[$i] ^= $data; - } - - for ($i = 0; $i <= 16; $i += 2) { - $this->_encipher($datal, $datar); - $this->_P[$i] = $datal; - $this->_P[$i+1] = $datar; - } - for ($i = 0; $i < 256; $i += 2) { - $this->_encipher($datal, $datar); - $this->_S[0][$i] = $datal; - $this->_S[0][$i+1] = $datar; - } - for ($i = 0; $i < 256; $i += 2) { - $this->_encipher($datal, $datar); - $this->_S[1][$i] = $datal; - $this->_S[1][$i+1] = $datar; - } - for ($i = 0; $i < 256; $i += 2) { - $this->_encipher($datal, $datar); - $this->_S[2][$i] = $datal; - $this->_S[2][$i+1] = $datar; - } - for ($i = 0; $i < 256; $i += 2) { - $this->_encipher($datal, $datar); - $this->_S[3][$i] = $datal; - $this->_S[3][$i+1] = $datar; - } - - return true; - } - -} - -?> |