| Current Path : /home/magalijoj/www/blog/inc/clearbricks/common/ |
| Current File : /home/magalijoj/www/blog/inc/clearbricks/common/lib.crypt.php |
<?php
# ***** BEGIN LICENSE BLOCK *****
# This file is part of Clearbricks.
# Copyright (c) 2006 Olivier Meunier and contributors. All rights
# reserved.
#
# Clearbricks is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# Clearbricks is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with Clearbricks; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
#
# ***** END LICENSE BLOCK *****
/**
@ingroup CLEARBRICKS
@brief Crypt and password helper functions.
*/
class crypt
{
/**
Returns an HMAC encoded value of <var>$data</var>, using the said <var>$key</var>
and <var>$hashfunc</var> as hash method (sha1 or md5 are accepted.)
@param key <b>string</b> Hash key
@param data <b>string</b> Data
@param hashfunc <b>string</b> Hash function (md5 or sha1)
@return <b>string</b>
*/
public static function hmac($key,$data,$hashfunc='sha1')
{
$blocksize=64;
if ($hashfunc != 'sha1') {
$hashfunc = 'md5';
}
if (strlen($key)>$blocksize) {
$key=pack('H*', $hashfunc($key));
}
$key=str_pad($key,$blocksize,chr(0x00));
$ipad=str_repeat(chr(0x36),$blocksize);
$opad=str_repeat(chr(0x5c),$blocksize);
$hmac = pack('H*',$hashfunc(($key^$opad).pack('H*',$hashfunc(($key^$ipad).$data))));
return bin2hex($hmac);
}
/**
Returns an 8 characters random password.
@return <b>string</b>
*/
public static function createPassword()
{
$pwd = array();
$chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890';
$chars2 = '$!@';
foreach (range(0,8) as $i) {
$pwd[] = $chars[rand(0,strlen($chars)-1)];
}
$pos1 = array_rand(array(0,1,2,3));
$pos2 = array_rand(array(4,5,6,7));
$pwd[$pos1] = $chars2[rand(0,strlen($chars2)-1)];
$pwd[$pos2] = $chars2[rand(0,strlen($chars2)-1)];
return implode('',$pwd);
}
}