rolfrost: Brauche einen eindeutigen und zufälligen String...

Beitrag lesen

hi Struppi,

use Time::HiRes qw/gettimeofday/;

habch leider nicht auf der Büchse... aber ich denke mal, dass time.$$ auf LINUXn so ziemlich eindeutig sein sollte. Meine Lösung ganz wird somit ein bischen vereinfacht:

use strict;

my @sessions;
my $tests = 10000;
for(1..$tests){
 my @salts;
 my $salt;

# salts erzeugen
 for("a".."z"){ push @salts, $_ }
 shuffle(@salts);
 $salt = join "", @salts;

# und nun crypten
 my $zufall = crypt($salt,time.$$);

# zufallsworte einlesen
 push @sessions, $zufall;
}

teste

my %keys = map{ $_,1}@sessions;
print scalar keys %keys, "\n$tests\n";
print "$sessions[0]\n";

subfunktion menge mischen (siehe PERL Doku: fisher_yates_shuffle)

sub shuffle{
 my $array = shift;
 my $i;
 for ($i = @$array; --$i;){
  my $j = int rand ($i+1);
  next if $i == $j;
  @$array[$i,$j] = @$array[$j,$i];
 }
}

... und der Abend ist gerettet ;-)

Viele Grüße, Rolf