Hallo Encoder!
Du musst dir dann auf einmal alle alten Passwörter ausgeben lassen und dann in sämtlichen Accounts die neuen eintragen, weil du nach Änderung des Masterpassworts nicht mehr an die alten Passwörter kommst.
Der Punkt ist, dass ich das Master-Passwort nicht „ändere“. In meiner Antwort auf dedlfix' Posting habe ich etwas Beispielcode gepostet - wenn ich dort $master_passwort
auf einen neuen Wert setze, erhalte ich das neue Passwort. Verwende ich den alten Wert, erhalte ich das alte Passwort. Ich kann also beliebig zwischen neuen und alten Passworten wechseln.
Zudem ließe sich das Ganze wie schon im Eingangsposting angedacht mit der Verwendung einer Zähler-Variable noch weiter vereinfachen:
$master_passwort = 'sehr_geheim'; // steht nicht im Quellcode, sondern wird vom Nutzer eingegeben!
$i = 0;
$dienst_bezeichner = 'onlinebanking_db';
$hash_current = md5($master_passwort.$dienst_bezeichner.$i);
printf('Das Passwort für %s lautet: %s', $dienst_bezeichner, substr($hash_current, 0, 8));
$hash_next = md5($master_passwort.$dienst_bezeichner.($i+1));
printf('Das nächste Passwort für %s lautet: %s', $dienst_bezeichner, substr($hash_next, 0, 8));
Sind alle Accounts auf das neue Passwort umgestellt, wird $i
um 1 erhöht und das Spiel kann auf Wunsch von vorne beginnen. So könnte man also sogar ohne eine Änderung des Master-Passworts ein neues Set an Passwörtern erhalten (ob der zu verwendende Wert von $i
gespeichert wird oder eingegeben wird wäre noch zu überlegen).
Gruß,
Claudius