Clairement, je te suis sur le conseil (arrêtez avec les contraintes débiles de mot de passe !) mais je ne suis pas d’accord avec l’analyse.
Car le conseil le plus important, c’est : stockez vos mots de passe avec un algorithme type PKBDF2, imposant un facteur travail suffisant pour la vérification. Si, partant d’un hash, il faut 0,2 secondes pour vérifier la correspondance avec un mot de passe proposé, le craquage d’un mot de passe alphanumérique (a-zA-Z0-9) de longueur N nécessite :
2 ^ (N * 6) / (5 * M) secondes
où M est le nombre de cœurs dédiés au calcul. Pour reprendre ton exemple (M = 5000 cœurs) :
– 3 caractères : 10 secondes
– 4 caractères : 10 minutes 42
– 5 caractères : près de 12 heures, soit 9,8 €
– 6 caractères : 31 jours et 19h soit 626 €
– 7 caractères : 5 ans et 8 mois, soit 40 000€.
Ce coût est celui d’un bruteforce tenté **en ayant accès directement au hash**, il est multiplié par 1,5 ou 2 s’il faut ajouter la connexion réseau (et dans ce cas, vous êtes beaucoup plus rapidement victime d’un DoS que d’une fuite de mots de passe …).

Moralité : Stockez vos mots de passe de façon sûre et la contrainte  » >= 7 caractères alphanumériques » (et absent des bases de mots de passe fuités) est suffisante pour prévenir tout type d’attaque, y compris la fuite des mots de passe stockés en base de données.
Au passage, utiliser PKBDF2 (ou argon2 ou …) vous autorise à avoir absolument n’importe quelle chaîne utf-8 en entrée sans autres contraintes (voire, mais je ne suis pas sûr, n’importe quelle chaîne binaire …).