Perl Authen::OATH и Google Authenticator - несовместимы?
Насколько я понимаю (что, очевидно, не так), модуль Authen :: OATH совместим с кодами totp, созданными приложением Google Authenticator. Но это не работает для меня, в то время как похожий фрагмент кода ruby работает. Мы здесь магазин Perl, и было бы полезно, если бы кто-нибудь мог указать мне правильное направление, чтобы избавить меня от копания в обеих библиотеках построчно.
Этот рубин работает совместимо:
require 'rubygems'
require 'rotp'
secret = "bqagf6ohx4rp3a67"
puts ROTP::TOTP.new(secret).now.to_s
Этот Perl не:
use Authen::OATH;
my $oath = Authen::OATH->new();
my $totp = $oath->totp(" bqagf6ohx4rp3a67" );
print "$totp\n";
1 ответ
Решение
Это не очень понятно из документации, но Authen::OATH
ожидает, что незашифрованные пароли totp
а также hotp
, Если это не вариант, вы можете попробовать decode_base32
из Convert::Base32
use Convert::Base32;
use Authen::OATH;
my $oath = Authen::OATH->new();
my $totp = $oath->totp( decode_base32( "bqagf6ohx4rp3a67" ) );
print "$totp\n";