sub random_password() {
 # Konsonanten (groß und klein)
 my @k = ('b'..'d', 'g'..'h', 'j'..'n', 'p'..'t', 'v'..'z');
 my @K = map { (uc $_) } @k;
 # Vokale (groß und klein)
 my @v = split //, 'aeiou';
 my @V = map { (uc $_) } @v;
 # Ziffern
 my @d = '0'..'9';
 # Sonderzeichen
 my @x = split //, '@%$#.+-=&!()<>';
 # Die "Mischung" der Passwörter kann über die
 # Elemente in dieser Liste konfiguriert werden.
 # Jedes Element ist eine mögliche Phrase im
 # generierten Passwort.
 my @pwd = ($k[rand @k] . $v[rand @v],
    $K[rand @K] . $v[rand @v],
    $K[rand @K] . $v[rand @v],
    $v[rand @v] . $k[rand @k],
    $K[rand @K] . $v[rand @v] . $k[rand @k],
    $k[rand @k] . $v[rand @v] . $k[rand @k],
    $k[rand @k] . $v[rand @v] . $k[rand @k],
    $v[rand @v] . $k[rand @k] . $v[rand @v],
    $V[rand @V] . $k[rand @k] . $v[rand @v],
    $d[rand @d],
    $d[rand @d],
    $x[rand @x],
    );
 # Zusammenbauen eines "zufälligen" Passworts aus den
 # Phrasen.
 my $pwd = '';
 while (length($pwd) <= 6 && @pwd) {
  my $i = rand @pwd;
  next if (length($pwd . $pwd[$i]) >= 9);
  $pwd .= $pwd[$i];
  $pwd[$i] = $pwd[$#pwd];
  pop @pwd;
 }
 return $pwd;
}
my $salt = join '', ('.', '/', 0..9, 'A'..'Z', 'a'..'z')[rand 64, rand 64];