Location: PHPKode > projects > CenterFlow > cake/libs/security.php
<?php
/* SVN FILE: $Id: security.php 4409 2007-02-02 13:20:59Z phpnut $ */
/**
 * Security Class
 *
 * This class is a singleton class that contains
 * functions for hasing and security.
 *
 * PHP versions 4 and 5
 *
 * CakePHP(tm) :  Rapid Development Framework <http://www.cakephp.org/>
 * Copyright 2005-2007, Cake Software Foundation, Inc.
 *								1785 E. Sahara Avenue, Suite 490-204
 *								Las Vegas, Nevada 89104
 *
 * Licensed under The MIT License
 * Redistributions of files must retain the above copyright notice.
 *
 * @filesource
 * @copyright		Copyright 2005-2007, Cake Software Foundation, Inc.
 * @link				http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
 * @package			cake
 * @subpackage		cake.cake.libs
 * @since			CakePHP(tm) v .0.10.0.1233
 * @version			$Revision: 4409 $
 * @modifiedby		$LastChangedBy: phpnut $
 * @lastmodified	$Date: 2007-02-02 07:20:59 -0600 (Fri, 02 Feb 2007) $
 * @license			http://www.opensource.org/licenses/mit-license.php The MIT License
 */
/**
 * Security Class
 *
 * This class is a singleton class that contains functions for hasing and security.
 *
 * @package		cake
 * @subpackage	cake.cake.libs
 */
class Security extends Object {
/**
 * Singleton method to retrieve the instance of the Security class
 *
 * @return object Security
 * @access public
 */
	function &getInstance() {
		static $instance = array();
		if (!$instance) {
			$instance[0] = &new Security;
		}
		return $instance[0];
	}
/**
 * Returns inactive minutes constant based on cake the security level
 *
 * @return integer
 * @access public
 */
	function inactiveMins() {
		switch(CAKE_SECURITY) {
			case 'high':
				return 10;
			break;
			case 'medium':
				return 100;
			break;
			case 'low':
			default:
				return 300;
			break;
		}
	}
/**
 * Generates a unique authkey
 *
 * @return mixed
 * @access public
 */
	function generateAuthKey() {
		$_this =& Security::getInstance();
		return $_this->hash(uniqid(rand(), true));
	}
/**
 * Validates the authkey
 *
 * @param mixed $authKey
 * @return boolean
 * @access public
 */
	function validateAuthKey($authKey) {
		return true;
	}
/**
 * Generates a hash of a string using a php built in hashing function
 *
 * @param string $string The string to be hashed
 * @param string $type The hashing algorithm
 * @return string
 * @access public
 */
	function hash($string, $type = 'sha1') {
		$type = strtolower($type);
		if ($type == 'sha1') {
			if (function_exists('sha1')) {
				$return = sha1($string);
				return $return;
			} else {
				$type = 'sha256';
			}
		}

		if ($type == 'sha256') {
			if (function_exists('mhash')) {
				$return = bin2hex(mhash(MHASH_SHA256, $string));
				return $return;
			} else {
				$type = 'md5';
			}
		}

		if ($type == 'md5') {
			$return = md5($string);
			return $return;
		}
	}
/**
 * Function that ciphers a text using a key
 *
 * @param string $text
 * @param string $key
 * @return string
 * @access public
 */
	function cipher($text, $key) {
		if (!defined('CIPHER_SEED')) {
			//This is temporary will change later
			define('CIPHER_SEED', '76859309657453542496749683645');
		}
		srand (CIPHER_SEED);
		$out = '';

		for($i = 0; $i < strlen($text); $i++) {
			for($j = 0; $j < ord(substr($key, $i % strlen($key), 1)); $j++) {
				$toss = rand(0, 255);
			}
			$mask = rand(0, 255);
			$out .= chr(ord(substr($text, $i, 1)) ^ $mask);
		}
		return $out;
	}
}
?>
Return current item: CenterFlow