Randompassword: Ein Zufallsgenerator für leicht merkbare aussprechbare Passwörter

Ich habe einst ein kleines Stück Software verwendet, das Chris Hunt bereits 1999 geschrieben hat. Die Originalimplementierung können Sie auf http://www.extraconnections.co.uk/code/password finden. Ich habe nur ein paar kleine Modifikationen vorgenommen.

randompassword ist eine kleine PHP Funktion, die recht einfach in andere Sprachen übertragen werden kann. Ich benutze Sie zB auch in Delphi. Der Sinn und Zweck dieser Funktion ist es, aussprechbare und daher leicht merkbare Passwörter zu generieren. Manchmal werden Zahlen oder Interpunktionszeichen eingefügt, aber es gibt immer eine Möglichkeit, die auch auszusprechen (zB 4 als A, 8 als B, 5 als S, 3 als E, usw.).

Natürlich ist das Passwort nicht zu 100% zufällig, da ihm ein Algorithmus zugrunde liegt. Aber es sollte genug Sicherheit gegen böse Kollegen oder Hobbyhacker bieten. Der größte Nutzen ist sicherlich die Tatsache, dass die Passwörter leichter zu merken sind, da fast alle ausgesprochen werden können. Also besteht keine Notwendigkeit mehr für Post-Its am Monitor 🙂

Example

Öffnen Sie das PHP script einfach direkt.

Quellcode

Es folgt der Quellcode, den ich für den Generator verwende. Wichtiger Hinweis: Sie können den Code verwenden, wie Sie wollen, so alnge Sie Chris Hunt als Originalautor erwähnen und zumindest einen Link auf meine Webseite und die von Chris Hunt anbieten. Wie üblich übernehme ich keinerlei Verantwortung dafür, was Sie mit denm Code oder den daraus erzeugten Passwörtern unternehmen.

function randompassword(
  $desiredlen = 8,
  $capitalprob = 10,
  $mutationprob = 15
  ) {
$vowels = array(
           "a" , "a" , "a" , "e" , "e" , "e" , "i" , "i" ,
           "o" , "o" , "u" , "u" , "ae", "ai", "au", "ao",
           "ay", "ea", "ei", "ey", "ua", "ia", "ie", "io",
           "oa", "oe", "ou", "oy", "!" , "1" , "4", "3"
           );
$cons = array(
         "b" , "c" , "d" , "f" , "g" , "h" , "j" , "k" ,
         "l" , "m",  "n" , "p" , "q" , "r" , "s" , "t" ,
         "v" , "w" , "x" , "z" , "cs", "ck", "ch", "cz",
         "7" , "2" , "5" , "6" , "8" , "9"
        );

  $passwd = "";
  $vowelnext   = rand(0,1);

  do {
    if ($vowelnext) {
      $nextpart = $vowels[array_rand($vowels)];
    } else {
      $nextpart = $cons[array_rand($cons)];
    }
    if (rand(0,100) < $capitalprob) {
      $nextpart = strtoupper($nextpart);
    }
    $passwd .= $nextpart;
    if (rand(0,100) > $mutationprob) {
      $vowelnext = !$vowelnext;
    }
  } while (strlen($passwd) < $desiredlen);
  return $passwd;
}

Der ursprüngliche Verdienst ist eindeutig der von Chris Hunt.