use strict; use CGI ':standard'; use DBI; use DBD::mysql; our ($sth,$dbh,%Set,@Out); &DBCredentials; # assigns %Set; print header,start_html('test'); DBRun("SET SESSION block_encryption_mode='aes-128-cbc'; SELECT ID, HEX(AES_ENCRYPT(Password,'$Set{AESKey}',RANDOM_BYTES(16))) FROM User WHERE 1"); while (my @ar=$sth->fetchrow_array){ my $len=length($ar[1]); push @Out,"$ar[0]: L=$len -- $ar[1]
\n"; } &DBEnd; print shift(@Out)."\n" while @Out; sub DBConnect { my $er; my $dsn='DBI:mysql:database='.$Set{DBName}; $dbh=DBI->connect($dsn, $Set{DBUser}, $Set{DBPass}) || ($er=1); if ($er){ myErr('DB Start Error'); } } ##DBConnect## sub DBRun { my $er; &DBConnect; $sth=$dbh->prepare($_[0]) || ($er=1); $sth->execute || ($er=1) if !$er; if ($er){ myErr('DB Execute Error', $_[0]); } } ##DBRun## sub DBDo { my $er; &DBConnect; $dbh->do($_[0]) || ($er=1); if ($DBI::err || $er){ myErr('DB Do Error', $_[0], $DBI::errstr); } $dbh->disconnect(); } ##DBDo## sub DBEnd {$sth->finish; $dbh->disconnect; } ##DBEnd#