I was recently having a discussion about password inputs! Most password fields out there mask their characters, i.e. they display "********" instead of "password". However, in some project I was involved there was a requirement to mask the input such that it would always display a static number of masked characters. I thought it would be somewhat unintuitive and questioned the benefit of it. But apparently there are also some well-known applications doing this as well. This made me wonder what advantage a brute-force attacker gains by knowing the length of the password.
Let be the ratio of possible passwords you can eliminate from your search, with being the password length and being the number of valid characters. Then:
Now, if we assume that (notice that is decreasing in ):
One interesting observation here is the following: even if your password was infinitely long, an attacker would still get some benefit from knowing the length of your password, the benefit of which at this point only depends on the number of characters that are allowed.
In practice, we can almost always assume that (26 lower-case, 26 upper-case, 10 digit characters), which gives us the following bounds:
i.e. even in the worst-case scenario, an attacker would only have approx. 1.63% fewer options to try.