如何在Perl CGI程序中加密和解密密码?

时间:2010-09-09 11:04:46

标签: perl cgi

是Perl CGI的新手,使用ActivePerl,SQLite DB,Apache服务器和Windows。 我有一个输入表单,其中包括Id,Name,Password等字段 上。每当有人创建新条目时,无论他们输入密码 应加密并存储在数据库中的字段。

下一次当同一个用户输入密码时,应该验证它。现在 我想要一个解密函数或代码。

我发现了一种叫做MD5加密的东西。请任何人都能给予 我有关于此的更多信息,并帮助我如何编写代码或任何链接 关于这个?

2 个答案:

答案 0 :(得分:10)

初次设置用户时调用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);
}

答案 1 :(得分:0)

MD5将任何字符串转换为摘要。 要检查用户的密码是否有效,您不需要数据库中的密码,只需将输入的摘要与您存储的摘要进行比较。