The most ridiculous password requirements ever

It’s common these days for web sites to require passwords to meet the following guidelines:

  • Must be at least 6 to 8 characters in length
  • In addition to lower-case characters, must have at least one uppercase character, one digit, and (sometimes) one “special” (that is, not alphanumeric) character

For a lark, I decided to dream up a totally ridiculous set of password requirements.

  1. The password must be at least 12 but no more than 16 characters in length.
  2. The password must contain at least three lower case characters, three upper case characters, three digits, and three non-alphanumeric characters.
  3. No letter, digit, or special character may appear more than once.
  4. When the digits are transliterated from “l33t” speak (0=O, 1=I or L, 3=E, 4=H, 5=S, 7=T, 8=B, 9=G), and the special characters are removed, and the result is uppercased, there must be more more than two characters in a row that are either ascending or descending. For example, Ad (=AD) is acceptable, but Ad9 (=ADG) is not, because it’s a run of three ascending letters.
  5. Any subset of three or more characters in the above transformation that forms a valid word in any of the following languages is forbidden: Albanian, Azerbaijani, Bosnian, Catalan, Croatian, Czech, Danish, Dutch, English, Estonaian, Finnish, French, Gaelic (Irish, Scottish, or Wesh), German, Hungarian, Icelandic, Inuktitut, Irish, Italian, Latin, Latvian, Lithuanian, Maltese, Montenegrin, Norwegian, Portuguese, Romanian, Sámi, Serbain, Slovak, Slovene, Spanish, or Swedish.
  6. Any subset of three or more characters in the above transformation that is found in /usr/share/dict/linux.words may not be used.
  7. When all alphabetic and special characters are removed from the password, leaving only the digits, no run of three digits or more may be ascending or descending.
  8. The password cannot contain the following special characters because they confuse the regular expression checker: space ^ | ! ? . ( ) [ ] { } $ * \ +
  9. Passwords expire every 45 days. New passwords may not contain any character in the same position where it was in the old password.
  10. New passwords must contain 80% different characters from the previous three passwords.

The program that checks password requirements returns only “passed” or “failed.” It does not indicate which of the above rules failed, to avoid leaking information to third parties.