#!perl use strict; use ST2614; my $key = $ARGV[1] || 'secretkey'; my %HoA=(); # open file to read open IN, '<','passmgr.dat' or die ("The file cannot be opened!"); # read records line at a time while (){ chomp; # remove carriage return/line feed # decode record my $record = ST2614::decode($_, $key); # split records into fields on tab my ($sitename,$id,$password,$url) = split "\t",$record; # build hash of arrays $HoA{$sitename} = [$id,$password,$url]; # print "$sitename $id $password $url\n"; } # open file to write open OUT, '>','passmgr.dat' or die ("The file cannot be opened!"); # loop through HOA using key to extract values from array for my $sitename (sort keys %HoA){ my $id = $HoA{$sitename}[0]; my $password = $HoA{$sitename}[1]; my $url = $HoA{$sitename}[2]; # build a record of fields seperated with tab my $record = join "\t",$sitename,$id,$password,$url; # store as encoded value print OUT ST2614::encode($record,$key)."\n"; }