I have followed this exact scenario, though I encrypt it with Crypt::CBC.
Here's how my code looks:
my ($username, $keyfile, $domain) = @_;
open (PASS, "</home/$username/$keyfile") or die "Error: $!\n";
flock (PASS, 2);
my @keypass = <PASS>;
close (PASS);
foreach (@keypass) {
chomp $_;
}
my $cipher = Crypt::CBC->new($keypass[0], 'Blowfish');
my $dbpass = $cipher->decrypt($keypass[1]);
use DBI qw(:sql_types);
my $userdatabaseName = "DBI:mysql:$domain";
my $userdatabaseUser = $username;
my $userdatabasePw = $dbpass;
$dbh = DBI->connect($userdatabaseName, $userdatabaseUser,
$userdatabasePw, { RaiseError => 1},) or die "Connect failed: $DBI::er
+rstr\n";
I also recommend the aforementioned O'Reilly's "CGI Progamming with Perl." And take a look at this
node on CGI and passwords.
—Brad
"A little yeast leavens the whole dough."