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";
Другие вопросы по тегам