<?php/*** PHP Class for handling Google Authenticator 2-factor authentication** @author Michael Kliewe* @copyright 2012 Michael Kliewe* @license http://www.opensource.org/licenses/bsd-license.php BSD License* @link http://www.phpgangsta.de/*/class PHPGangsta_GoogleAuthenticator{protected $_codeLength = 6;/*** Create new secret.* 16 characters, randomly chosen from the allowed base32 characters.** @param int $secretLength* @return string*/public function createSecret($secretLength = 16){$validChars = $this->_getBase32LookupTable();unset($validChars[32]);$secret = '';for ($i = 0; $i < $secretLength; $i++) {$secret .= $validChars[array_rand($validChars)];}return $secret;}/*** Calculate the code, with given secret and point in time** @param string $secret* @param int|null $timeSlice* @return string*/public function getCode($secret, $timeSlice = null){if ($timeSlice === null) {$timeSlice = floor(time() / 30);}$secretkey = $this->_base32Decode($secret);// Pack time into binary string$time = chr(0).chr(0).chr(0).chr(0).pack('N*', $timeSlice);