Perl Authen :: OATH和Google身份验证器 - 不兼容?

mil*_*esb 6 perl google-authenticator

我的理解(可能显然是错误的)是Authen :: OATH模块与Google Authenticator App生成的totp代码兼容.但它对我不起作用,而类似的红宝石代码则有用.我们在这里是一个perl商店,如果有人能指出我正确的方向来帮助我免于逐行挖掘两个库,那将会有所帮助.

这款红宝石兼容:

require 'rubygems'

require 'rotp'

secret = "bqagf6ohx4rp3a67"

puts ROTP::TOTP.new(secret).now.to_s
Run Code Online (Sandbox Code Playgroud)

这个perl没有:

use Authen::OATH;

my $oath = Authen::OATH->new();

my $totp = $oath->totp(" bqagf6ohx4rp3a67" );

print "$totp\n";
Run Code Online (Sandbox Code Playgroud)

fle*_*esk 5

从文档中不是很清楚,但是Authen::OATH希望将未编码的密码用于totphotp.如果这不是一种选择,你可以尝试decode_base32转换:: Base32

use Convert::Base32;
use Authen::OATH;

my $oath = Authen::OATH->new();

my $totp = $oath->totp( decode_base32( "bqagf6ohx4rp3a67" ) );

print "$totp\n";
Run Code Online (Sandbox Code Playgroud)