大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全家桶1年46,售后保障稳定
[#11]
torben dot egmose at gmail dot com [2009-03-22 11:40:43]
HOTP Algorithm that works according to the RCF http://tools.ietf.org/html/draft-mraihi-oath-hmac-otp-04
The test cases from the RCF document the ASCII string as “123456787901234567890”.
But the hex decoded to a string is “12345678901234567890”.
Secret=”12345678901234567890″;
Count:
0 755224
1 287082
function oath_hotp($key,$counter) {
// Convert to padded binary string
$data = pack (‘C*’, $counter);
$data = str_pad($data,8,chr(0),STR_PAD_LEFT);
// HMAC
return hash_hmac(‘sha1’,$data,$key);
}
function oath_truncate($hash, $length = 6) {
// Convert to dec
foreach(str_split($hash,2) as $hex) {
$hmac_result[]=hexdec($hex);
}
// Find offset
$offset = $hmac_result[19] & 0xf;
// Algorithm from RFC
return (
(($hmac_result[$offset+0] & 0x7f) <
(($hmac_result[$offset+1] & 0xff) <
(($hmac_result[$offset+2] & 0xff) <
($hmac_result[$offset+3] & 0xff)
) % pow(10,$length);
}
print “
";
print “Compare results with:”
print ” http://tools.ietf.org/html/draft-mraihi-oath-hmac-otp-04\n”;
print “Count\tHash\t\t\t\t\t\tPin\n”;
for($i=0;$i<10;$i++)
print $i.”\t”.($a=oath_hotp(“12345678901234567890”,$i))
print “\t”.oath_truncate($a).”\n”;
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234634.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...