Esempio n. 1
0
 function HOTP($secret, $cnt, $digits = 6)
 {
     if (CUtil::BinStrlen($secret) <= 25) {
         $sha_hash = CSecurityUser::hmacsha1(pack("NN", 0, $cnt), $secret);
     } else {
         $sha_hash = CSecurityUser::hmacsha256(pack("NN", 0, $cnt), $secret);
     }
     if ($sha_hash !== false) {
         $dwOffset = hexdec(substr($sha_hash, -1, 1));
         $dbc1 = hexdec(substr($sha_hash, $dwOffset * 2, 8));
         $dbc2 = $dbc1 & 0x7fffffff;
         $hotp = $dbc2 % pow(10, $digits);
         return $hotp;
     } else {
         return false;
     }
 }