root/websites/events.php.gr.jp/branches/cake/cake/libs/security.php @ 18028

Revision 18028, 4.5 kB (checked in by ha1t, 6 years ago)

first import

Line 
1<?php
2/* SVN FILE: $Id: security.php 7296 2008-06-27 09:09:03Z gwoo $ */
3/**
4 * Short description for file.
5 *
6 * Long description for file
7 *
8 * PHP versions 4 and 5
9 *
10 * CakePHP(tm) :  Rapid Development Framework <http://www.cakephp.org/>
11 * Copyright 2005-2008, Cake Software Foundation, Inc.
12 *                                1785 E. Sahara Avenue, Suite 490-204
13 *                                Las Vegas, Nevada 89104
14 *
15 * Licensed under The MIT License
16 * Redistributions of files must retain the above copyright notice.
17 *
18 * @filesource
19 * @copyright        Copyright 2005-2008, Cake Software Foundation, Inc.
20 * @link                http://www.cakefoundation.org/projects/info/cakephp CakePHP(tm) Project
21 * @package            cake
22 * @subpackage        cake.cake.libs
23 * @since            CakePHP(tm) v .0.10.0.1233
24 * @version            $Revision: 7296 $
25 * @modifiedby        $LastChangedBy: gwoo $
26 * @lastmodified    $Date: 2008-06-27 02:09:03 -0700 (Fri, 27 Jun 2008) $
27 * @license            http://www.opensource.org/licenses/mit-license.php The MIT License
28 */
29/**
30 * Short description for file.
31 *
32 * Long description for file
33 *
34 * @package        cake
35 * @subpackage    cake.cake.libs
36 */
37class Security extends Object {
38
39/**
40 * Default hash method
41 *
42 * @var string
43 * @access public
44 */
45    var $hashType = null;
46/**
47  * Singleton implementation to get object instance.
48  *
49  * @return object
50  * @access public
51  * @static
52  */
53    function &getInstance() {
54        static $instance = array();
55        if (!$instance) {
56            $instance[0] =& new Security;
57        }
58        return $instance[0];
59    }
60/**
61  * Get allowed minutes of inactivity based on security level.
62  *
63  * @return integer Allowed inactivity in minutes
64  * @access public
65  * @static
66  */
67    function inactiveMins() {
68        $_this =& Security::getInstance();
69        switch(Configure::read('Security.level')) {
70            case 'high':
71                return 10;
72            break;
73            case 'medium':
74                return 100;
75            break;
76            case 'low':
77            default:
78                return 300;
79                break;
80        }
81    }
82/**
83  * Generate authorization hash.
84  *
85  * @return string Hash
86  * @access public
87  * @static
88  */
89    function generateAuthKey() {
90        $_this =& Security::getInstance();
91        if(!class_exists('String')) {
92            App::import('Core', 'String');
93        }
94        return $_this->hash(String::uuid());
95    }
96/**
97 * Validate authorization hash.
98 *
99 * @param string $authKey Authorization hash
100 * @return boolean Success
101 * @access public
102 * @static
103 */
104    function validateAuthKey($authKey) {
105        $_this =& Security::getInstance();
106        return true;
107    }
108/**
109 * Create a hash from string using given method.
110 *
111 * @param string $string String to hash
112 * @param string $type Method to use (sha1/sha256/md5)
113 * @param boolean $salt If true, automatically appends the application's salt
114 *                   value to $string (Security.salt)
115 * @return string Hash
116 * @access public
117 * @static
118 */
119    function hash($string, $type = null, $salt = false) {
120        $_this =& Security::getInstance();
121
122        if ($salt) {
123            $string = Configure::read('Security.salt') . $string;
124        }
125        if (empty($type)) {
126            $type = $_this->hashType;
127        }
128        $type = strtolower($type);
129
130        if ($type == 'sha1' || $type == null) {
131            if (function_exists('sha1')) {
132                $return = sha1($string);
133                return $return;
134            } else {
135                $type = 'sha256';
136            }
137        }
138
139        if ($type == 'sha256') {
140            if (function_exists('mhash')) {
141                $return = bin2hex(mhash(MHASH_SHA256, $string));
142                return $return;
143            } else {
144                $type = 'md5';
145            }
146        }
147
148        if ($type == 'md5') {
149            $return = md5($string);
150            return $return;
151        }
152    }
153/**
154 * Sets the default hash method for the Security object.  This affects all objects using
155 * Security::hash().
156 *
157 * @param string $hash Method to use (sha1/sha256/md5)
158 * @access public
159 * @static
160 * @see Security::hash()
161 */
162    function setHash($hash) {
163        $_this =& Security::getInstance();
164        $_this->hashType = $hash;
165    }
166/**
167 * Encripts/Decrypts a text using the given key.
168 *
169 * @param string $text Encrypted string to decrypt, normal string to encrypt
170 * @param string $key Key to use
171 * @return string Encrypted/Decrypted string
172 * @access public
173 * @static
174 */
175    function cipher($text, $key) {
176        if (empty($key)) {
177            trigger_error(__('You cannot use an empty key for Security::cipher()', true), E_USER_WARNING);
178            return '';
179        }
180
181        $_this =& Security::getInstance();
182        if (!defined('CIPHER_SEED')) {
183            //This is temporary will change later
184            define('CIPHER_SEED', '76859309657453542496749683645');
185        }
186        srand (CIPHER_SEED);
187        $out = '';
188
189        for ($i = 0; $i < strlen($text); $i++) {
190            for ($j = 0; $j < ord(substr($key, $i % strlen($key), 1)); $j++) {
191                $toss = rand(0, 255);
192            }
193            $mask = rand(0, 255);
194            $out .= chr(ord(substr($text, $i, 1)) ^ $mask);
195        }
196        return $out;
197    }
198}
199?>
Note: See TracBrowser for help on using the browser.