Нужно зашифровать пароль с помощью средств из стандартной поставки Perl. Степень защиты важна, но не критична. Нужно чтоб в шифровании участвовал ключ.
Пока использую AES-266 с вызовом openssl:
sub encrypt {
my ($phrase, $key) = @_;
my $result;
return undef if (! defined $key || ! defined $phrase);
my ($pid, $wtr, $rdr, $err);
$err = 1;
eval {
$pid = open3($wtr, $rdr, $err, 'openssl', 'enc', '-aes-256-cbc', '-pass', "pass:$key", '-salt', '-base64');
};
croak('Cannot fork: ' . $@) if ($@);
print { $wtr } $phrase;
close($wtr);
my $status = waitpid($pid, 0);
if ($status <= 0 || $? != EXIT_SUCCESS) {
my $message = do { local $/ = undef; <$err> };
croak('openssl failed: ' , $message);
}
$result = do { local $/ = undef; <$rdr> };
chomp($result);
close($rdr);
close($err);
return $result;
}
Но поскольку скрипт должен работать и на оффтопик-ОС, а там openssl не так часто можно встретить, то нужно что-то более стандартное (кроссплатформенное). Подскажите пожалуйста.
Ну и наихудший вариант — тоже вариант: навелосипедить что-то. Но что?