我是Perl CGI的新手,使用ActivePerl,SQLite DB,Apache服务器和Windows。 我有一个参赛表格,其中他们是像Id,名称,密码等 上。每当有人进行新的输入时,无论他们输入什么密码 字段应该加密并存储在数据库中。如何在Perl CGI程序中加密和解密密码?
下一次当同一个用户输入密码时,应该验证它。现在 我想一个解密函数或代码是必需的。
我发现了一种叫做MD5加密的东西。请有人可以给我 我更多关于这方面的信息,并帮助我如何写代码或关于此的任何链接 ?
我是Perl CGI的新手,使用ActivePerl,SQLite DB,Apache服务器和Windows。 我有一个参赛表格,其中他们是像Id,名称,密码等 上。每当有人进行新的输入时,无论他们输入什么密码 字段应该加密并存储在数据库中。如何在Perl CGI程序中加密和解密密码?
下一次当同一个用户输入密码时,应该验证它。现在 我想一个解密函数或代码是必需的。
我发现了一种叫做MD5加密的东西。请有人可以给我 我更多关于这方面的信息,并帮助我如何写代码或关于此的任何链接 ?
拨打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);
}
MD5将任何字符串转换为摘要。 要检查用户的密码是否有效,您不需要数据库中的密码,只需将其输入摘要中的摘要与存储的摘要进行比较。
MD5是一个散列,尽管它已经过时了,所以它不会“加密”任何东西。 – 2010-09-09 11:13:42
顺便说一句MD5加密是不可逆的,那就是你不能恢复原来的密码。 – 2010-09-09 11:14:46
这不是加密,它是一种哈希算法。请正确使用术语,这些是密码术的不同概念。 – daxim 2010-09-09 11:32:33
根据你的问题,你不应该尝试自己做这件事。找到一个认证框架。 – 2010-09-09 11:15:05
我推荐使用Eksblowfish ['Authen :: Passphrase'](http://p3rl.org/Authen::Passphrase)。 – daxim 2010-09-09 11:35:50