-
Notifications
You must be signed in to change notification settings - Fork 943
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Bruteforce and suboptimal scoring chains #209
Comments
That was something I noticed was off with the matching algorithm when I re-implemented zxcvbn in Java. I ended up doing a bunch of work and coming up with a couple new algorithms to find matches and what to consider brute force or not. One of those algorithms is slow and correct, but with a large enough problem space will continue matching until the heat death of the universe, the other is faster but much less correct. I have a heuristic to know that if too much time has elapsed, I should stop using the slow / correct one and switch to the fast one. The algorithms I came up with can be found here: https://github.com/GoSimpleLLC/nbvcxz/blob/master/src/main/java/me/gosimple/nbvcxz/Nbvcxz.java Here is the output using console mode from my port:
|
In my example
lucky_buster_duke
is chunked intolucky_
,buster
,_
,duke
with an overall number of guesses of approximately 10^13, mostly due tolucky_
being scored as a bruteforce segment with.Using your own scoring methods, breaking it up into
lucky
,_
,buster
,_duke
would have a much lower guesses score of around 10^12, but this pattern is not evaluated for some reason. It's the same number of chunks: I know the scoring methods give factorial growth to the guesses score, but that would not matter in this case.I think there might be an bug in the bruteforce segment generator or the scoring segment back-tracker.
The text was updated successfully, but these errors were encountered: