Hallo,
siehe Betreff. Mein Versuch mit
=try...
my @sessions;
for (1..60){
my $session = time.$$;
my $salt = int rand 98 + 1;
$session = crypt($salt,$session);
push @sessions, $session;
}print sort join "\n", @sessions, "\n";
=cutzeigt jedoch dass es doppelte IDs gibt. Hat jemand einen besseren Vorschlag?
Einerseits weiß ich nicht ob dein salt nicht schlecht gewählt ist, da es ja ein String sein sollte. anderseits ist time natürlich zu lahm, aber anderseits in der Praxis sollte es ausreichen, wenn nicht probier das mal (dauert aber wesentlich länger):
use strict;
use Time::HiRes qw/gettimeofday/;
my @sessions;
my $salt = 'XX';
for (1..600)
{
my $session = (gettimeofday)[1];
my $salt = getSalt();
$session = crypt($salt,$session);
push @sessions, $session;
}
my %keys = map{ $_, 1} @sessions;
print scalar keys %keys, "\n"; # soll: 600 ist: 591
sub getSalt
{
my $anzahl = shift || 2;
return join '', map { (0..9, 'A'..'Z', 'a'..'z')[rand 64]; } (0..$anzahl);
}
Struppi.