LINUX.ORG.RU

Чем бы зашифровать пароль?

 , , ,


0

1

Нужно зашифровать пароль с помощью средств из стандартной поставки 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 не так часто можно встретить, то нужно что-то более стандартное (кроссплатформенное). Подскажите пожалуйста.

Ну и наихудший вариант — тоже вариант: навелосипедить что-то. Но что?

Ответ на: комментарий от oh-la-la

Перл на целевых машинах будет, это 100%. В какой поставке — неизвестно.

KennyMinigun ★★★★★
() автор топика
Ответ на: комментарий от no-such-file

Ну и вообще, ты на cpan смотрел?

Я же сказал:

Нужно зашифровать пароль с помощью средств из стандартной поставки Perl.

KennyMinigun ★★★★★
() автор топика
Ответ на: комментарий от KennyMinigun

Спасибо, отличная идея

Нужно зашифровать пароль с помощью средств из стандартной поставки Perl.

У тебя там раздвоение сознания что-ли?

no-such-file ★★★★★
()

через *аргументы* командной строки — не безопасно передавать пароль.

подсмотреть его сможет другой непривелигерованный процесс (возможно взломанный) — через файловую систему /proc/ (или ещё как)..

но например можешь передавать пароль через переменные окружения. переменные окружения — более безопасны.

user_id_68054 ★★★★★
()
Ответ на: комментарий от no-such-file

Таскать с собой тоже вариант. Или даже скопипастить.

KennyMinigun ★★★★★
() автор топика
Ответ на: комментарий от Jini

> переменные окружения — более безопасны.

Точно так же: cat /proc/self/environ

не обманывай! :-)

$ cat /proc/17255/environ 
cat: /proc/17255/environ: Permission denied

а вот /proc/.../cmdline (в отличии от /proc/.../environ ) — читаются как миленькие.

# P.S.: и «self» тут вообще не уместно. я говорю про читение от другого (не привелигерованного) пользователя

user_id_68054 ★★★★★
()
Последнее исправление: user_id_68054 (всего исправлений: 3)
Ответ на: комментарий от MKuznetsov

и при чём тут тег «си» в сообщении ?

Надеюсь по тегу «си» найдутся люди, хорошо ориентирующиеся в имплементировании алгоритмов шифрования.

KennyMinigun ★★★★★
() автор топика

+1 за Crypt::Blowfish_PP, и sha256 как HMAC :)

joy4eg ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.