我的理解(可能显然是错误的)是Authen::OATH模块与Google身份验证器应用生成的totp代码兼容。但它对我不起作用,而类似的红宝石代码则有用。我们在这里是一个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";
答案 0 :(得分:5)
文档中不太清楚,但Authen::OATH
期望将未编码的密码设为totp
和hotp
。如果这不是一个选项,您可以尝试Convert::Base32
decode_base32
use Convert::Base32;
use Authen::OATH;
my $oath = Authen::OATH->new();
my $totp = $oath->totp( decode_base32( "bqagf6ohx4rp3a67" ) );
print "$totp\n";