Как я могу зашифровать и расшифровать пароли в программе Perl CGI? - PullRequest
2 голосов
/ 09 сентября 2010

Я новичок в Perl CGI, использующем ActivePerl, SQLite DB, сервер Apache и Windows. У меня есть форма ввода, в которой их поля, такие как Id, Name, Password и т. Д. на. Всякий раз, когда кто-то делает новую запись, то все, что они вводят в пароль поле, которое должно быть зашифровано и сохранено в базе данных.

В следующий раз, когда этот же пользователь введет пароль, он должен быть проверен. Сейчас Я полагаю, требуется расшифровать функцию или код.

Я нашел то, что называется шифрованием MD5. Пожалуйста, кто-нибудь может дать мне больше информации об этом и помочь мне относительно того, как написать код или любую ссылку относительно этого?

Ответы [ 2 ]

10 голосов
/ 09 сентября 2010

Вызовите make_crypto_hash, когда вы изначально настраиваете пользователя, параметром является его заданная пароль. Сохраните возвращаемое значение функции в базе данных.

sub make_crypto_hash {
    my ($passphrase) = @_;
    return Authen::Passphrase::BlowfishCrypt->new(
        cost        => 8,
        salt_random => 1,
        passphrase  => $passphrase,
    )->as_rfc2307;
}

Звоните match_passphrase_against_crypto_hash, когда кто-то входит в систему, и вы хотите увидеть, принадлежит ли пароль к пользователю. Параметры - это крипто-хеш, который вы извлекаете из базы данных для данного имени пользователя, и пароль, только что заданный пользователем. Возвращаемое значение логическое.

sub match_passphrase_against_crypto_hash {
    my ($crypto_hash, $passphrase) = @_;
    return Authen::Passphrase::BlowfishCrypt
        ->from_rfc2307($crypto_hash)->match($passphrase);
}
0 голосов
/ 09 сентября 2010

MD5 преобразует любую строку в дайджест.Чтобы проверить, действителен ли пароль пользователя, вам не нужен пароль из базы данных, а только сравните дайджест из введенного им с сохраненным вами дайджестом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...