[ Index ] |
PHP Cross Reference of vtigercrm-6.1.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Zend Framework 4 * 5 * LICENSE 6 * 7 * This source file is subject to the new BSD license that is bundled 8 * with this package in the file LICENSE.txt. 9 * It is also available through the world-wide-web at this URL: 10 * http://framework.zend.com/license/new-bsd 11 * If you did not receive a copy of the license and are unable to 12 * obtain it through the world-wide-web, please send an email 13 * to [email protected] so we can send you a copy immediately. 14 * 15 * @category Zend 16 * @package Zend_Crypt 17 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) 18 * @license http://framework.zend.com/license/new-bsd New BSD License 19 * @version $Id: Crypt.php 25024 2012-07-30 15:08:15Z rob $ 20 */ 21 22 /** 23 * @category Zend 24 * @package Zend_Crypt 25 * @copyright Copyright (c) 2005-2012 Zend Technologies USA Inc. (http://www.zend.com) 26 * @license http://framework.zend.com/license/new-bsd New BSD License 27 */ 28 class Zend_Crypt 29 { 30 31 const TYPE_OPENSSL = 'openssl'; 32 const TYPE_HASH = 'hash'; 33 const TYPE_MHASH = 'mhash'; 34 35 protected static $_type = null; 36 37 /** 38 * @var array 39 */ 40 protected static $_supportedAlgosOpenssl = array( 41 'md2', 42 'md4', 43 'mdc2', 44 'rmd160', 45 'sha', 46 'sha1', 47 'sha224', 48 'sha256', 49 'sha384', 50 'sha512' 51 ); 52 53 /** 54 * @var array 55 */ 56 protected static $_supportedAlgosMhash = array( 57 'adler32', 58 'crc32', 59 'crc32b', 60 'gost', 61 'haval128', 62 'haval160', 63 'haval192', 64 'haval256', 65 'md4', 66 'md5', 67 'ripemd160', 68 'sha1', 69 'sha256', 70 'tiger', 71 'tiger128', 72 'tiger160' 73 ); 74 75 /** 76 * @param string $algorithm 77 * @param string $data 78 * @param bool $binaryOutput 79 * @return unknown 80 */ 81 public static function hash($algorithm, $data, $binaryOutput = false) 82 { 83 $algorithm = strtolower($algorithm); 84 if (function_exists($algorithm)) { 85 return $algorithm($data, $binaryOutput); 86 } 87 self::_detectHashSupport($algorithm); 88 $supportedMethod = '_digest' . ucfirst(self::$_type); 89 $result = self::$supportedMethod($algorithm, $data, $binaryOutput); 90 return $result; 91 } 92 93 /** 94 * @param string $algorithm 95 * @throws Zend_Crypt_Exception 96 */ 97 protected static function _detectHashSupport($algorithm) 98 { 99 if (function_exists('hash')) { 100 self::$_type = self::TYPE_HASH; 101 if (in_array($algorithm, hash_algos())) { 102 return; 103 } 104 } 105 if (function_exists('mhash')) { 106 self::$_type = self::TYPE_MHASH; 107 if (in_array($algorithm, self::$_supportedAlgosMhash)) { 108 return; 109 } 110 } 111 if (function_exists('openssl_digest')) { 112 if ($algorithm == 'ripemd160') { 113 $algorithm = 'rmd160'; 114 } 115 self::$_type = self::TYPE_OPENSSL; 116 if (in_array($algorithm, self::$_supportedAlgosOpenssl)) { 117 return; 118 } 119 } 120 /** 121 * @see Zend_Crypt_Exception 122 */ 123 require_once 'Zend/Crypt/Exception.php'; 124 throw new Zend_Crypt_Exception('\'' . $algorithm . '\' is not supported by any available extension or native function'); 125 } 126 127 /** 128 * @param string $algorithm 129 * @param string $data 130 * @param bool $binaryOutput 131 * @return string 132 */ 133 protected static function _digestHash($algorithm, $data, $binaryOutput) 134 { 135 return hash($algorithm, $data, $binaryOutput); 136 } 137 138 /** 139 * @param string $algorithm 140 * @param string $data 141 * @param bool $binaryOutput 142 * @return string 143 */ 144 protected static function _digestMhash($algorithm, $data, $binaryOutput) 145 { 146 $constant = constant('MHASH_' . strtoupper($algorithm)); 147 $binary = mhash($constant, $data); 148 if ($binaryOutput) { 149 return $binary; 150 } 151 return bin2hex($binary); 152 } 153 154 /** 155 * @param string $algorithm 156 * @param string $data 157 * @param bool $binaryOutput 158 * @return string 159 */ 160 protected static function _digestOpenssl($algorithm, $data, $binaryOutput) 161 { 162 if ($algorithm == 'ripemd160') { 163 $algorithm = 'rmd160'; 164 } 165 return openssl_digest($data, $algorithm, $binaryOutput); 166 } 167 168 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 20:08:37 2014 | Cross-referenced by PHPXref 0.7.1 |