6

我的理解(这可能显然是错误的)是Authen::OATH模块与 Google Authenticator App 生成的 totp 代码兼容。但这对我不起作用,而类似的 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";
4

1 回答 1

6

从文档中不是很清楚,但Authen::OATH期望未编码的密码totphotp. 如果这不是一个选项,您可以尝试decode_base32Convert::Base32

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

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

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

print "$totp\n";
于 2011-11-30T19:58:37.967 回答