如何使用 Perl 生成 Google ReCaptcha V2 安全令牌?
How to generate a Google ReCaptcha V2 secure token with Perl?
我正在尝试使用 google 使用 perl 的安全令牌,如 link 中所述
https://developers.google.com/recaptcha/docs/secure_token
我从您的代码开始,但最终得到了一些不同的东西。我不是加密专家,所以我不确定为什么我的方法有效而你的方法无效。但这是我得到的 - 它确实有效:
use strict;
use warnings;
use Crypt::ECB;
use UUID::Tiny ':std';
use Digest::SHA1 qw(sha1);
use MIME::Base64::URLSafe;
use Time::HiRes qw(time);
use Math::Round qw(round);
my $uuid = create_uuid_as_string(UUID_V4);
my $t = round(time * 1000);
my $json = '{"session_id":"' . $uuid . '","ts_ms":' . $t . '}';
my $pad = 16 - (length($json) % 16);
$json = $json . chr($pad)x$pad;
my $crypt = Crypt::ECB->new;
$crypt->padding(PADDING_NONE);
$crypt->cipher('Rijndael') || die $crypt->errstring;
$crypt->key(substr(sha1($c->{captcha_secret_key}), 0, 16));
my $enc = urlsafe_b64encode($crypt->encrypt($json));
我基本上将 this php library 转换为粗略的 perl 来让它工作。
我正在尝试使用 google 使用 perl 的安全令牌,如 link 中所述 https://developers.google.com/recaptcha/docs/secure_token
我从您的代码开始,但最终得到了一些不同的东西。我不是加密专家,所以我不确定为什么我的方法有效而你的方法无效。但这是我得到的 - 它确实有效:
use strict;
use warnings;
use Crypt::ECB;
use UUID::Tiny ':std';
use Digest::SHA1 qw(sha1);
use MIME::Base64::URLSafe;
use Time::HiRes qw(time);
use Math::Round qw(round);
my $uuid = create_uuid_as_string(UUID_V4);
my $t = round(time * 1000);
my $json = '{"session_id":"' . $uuid . '","ts_ms":' . $t . '}';
my $pad = 16 - (length($json) % 16);
$json = $json . chr($pad)x$pad;
my $crypt = Crypt::ECB->new;
$crypt->padding(PADDING_NONE);
$crypt->cipher('Rijndael') || die $crypt->errstring;
$crypt->key(substr(sha1($c->{captcha_secret_key}), 0, 16));
my $enc = urlsafe_b64encode($crypt->encrypt($json));
我基本上将 this php library 转换为粗略的 perl 来让它工作。