PHPGangsta/GoogleAuthenticator.php
protected function _base32Decode($secret)
    {
        if (empty($secret)) {
            return '';
        }

        $base32chars = $this->_getBase32LookupTable();
        $base32charsFlipped = array_flip($base32chars);

        $paddingCharCount = substr_count($secret, $base32chars[32]);
        $allowedValues = array(6, 4, 3, 1, 0);
        if (!in_array($paddingCharCount, $allowedValues)) {
            return false;
        }
        for ($i = 0; $i < 4; ++$i) {
            if ($paddingCharCount == $allowedValues[$i] &&
                substr($secret, -($allowedValues[$i])) != str_repeat($base32chars[32], $allowedValues[$i])) {
                return false;
            }
        }
        $secret = str_replace('=', '', $secret);
        $secret = str_split($secret);
        $binaryString = '';
        for ($i = 0; $i < count($secret); $i = $i + 8) {
            $x = '';
            if (!in_array($secret[$i], $base32chars)) {
                return false;
            }
            for ($j = 0; $j < 8; ++$j) {
                $x .= str_pad(base_convert(@$base32charsFlipped[@$secret[$i + $j]], 10, 2), 5, '0', STR_PAD_LEFT);
            }
            $eightBits = str_split($x, 8);
            for ($z = 0; $z < count($eightBits); ++$z) {
                $binaryString .= (($y = chr(base_convert($eightBits[$z], 2, 10))) || ord($y) == 48) ? $y : '';
            }
        }

        return $binaryString;
    }
protected function _base32Decode($secret)
    {
        if (empty($secret)) {
            return '';
        }

        $base32chars = $this->_getBase32LookupTable();
        $base32charsFlipped = array_flip($base32chars);

        $paddingCharCount = substr_count($secret, $base32chars[32]);
        $allowedValues = array(6, 4, 3, 1, 0);
        if (!in_array($paddingCharCount, $allowedValues)) {
            return false;
        }
        for ($i = 0; $i < 4; ++$i) {
            if ($paddingCharCount == $allowedValues[$i] &&
                substr($secret, -($allowedValues[$i])) != str_repeat($base32chars[32], $allowedValues[$i])) {
                return false;
            }
        }
        $secret = str_replace('=', '', $secret);
        $secret = str_split($secret);
        $binaryString = '';
        for ($i = 0; $i < count($secret); $i = $i + 8) {
            $x = '';
            if (!in_array($secret[$i], $base32chars)) {
                return false;
            }
            for ($j = 0; $j < 8; ++$j) {
                $x .= str_pad(base_convert(@$base32charsFlipped[@$secret[$i + $j]], 10, 2), 5, '0', STR_PAD_LEFT);
            }
            $eightBits = str_split($x, 8);
            for ($z = 0; $z < count($eightBits); ++$z) {
                $binaryString .= (($y = chr(base_convert($eightBits[$z], 2, 10))) || ord($y) == 48) ? $y : '';
            }
        }

        return $binaryString;
    }
protected function _base32Decode ( $ secret ) { if ( empty ( $ secret ) ) { return '' ; } $ base32chars = $ this -> _getBase32LookupTable ( ) ; $ base32charsFlipped = array_flip ( $ base32chars ) ; $ paddingCharCount = substr_count ( $ secret , $ base32chars [ 32 ] ) ; $ allowedValues = array ( 6 , 4 , 3 , 1 , 0 ) ; if ( ! in_array ( $ paddingCharCount , $ allowedValues ) ) { return false ; } for ( $ i = 0 ; $ i < 4 ; ++ $ i ) { if ( $ paddingCharCount == $ allowedValues [ $ i ] && substr ( $ secret , - ( $ allowedValues [ $ i ] ) ) != str_repeat ( $ base32chars [ 32 ] , $ allowedValues [ $ i ] ) ) { return false ; } } $ secret = str_replace ( '=' , '' , $ secret ) ; $ secret = str_split ( $ secret ) ; $ binaryString = '' ; for ( $ i = 0 ; $ i < count ( $ secret ) ; $ i = $ i + 8 ) { $ x = '' ; if ( ! in_array ( $ secret [ $ i ] , $ base32chars ) ) { return false ; } for ( $ j = 0 ; $ j < 8 ; ++ $ j ) { $ x .= str_pad ( base_convert ( @ $ base32charsFlipped [ @ $ secret [ $ i + $ j ] ] , 10 , 2 ) , 5 , '0' , STR_PAD_LEFT ) ; } $ eightBits = str_split ( $ x , 8 ) ; for ( $ z = 0 ; $ z < count ( $ eightBits ) ; ++ $ z ) { $ binaryString .= ( ( $ y = chr ( base_convert ( $ eightBits [ $ z ] , 2 , 10 ) ) ) || ord ( $ y ) == 48 ) ? $ y : '' ; } } return $ binaryString ; }
Helper class to decode base32.

@param $secret

@return bool|string
Helper class to decode base32 .