Passcore is a minimal Rust library for scoring password strength. It evaluates passwords based on length, character variety, uniqueness, and penalties, producing a score from 0 to 1000.
Passcore is a minimal Rust library for scoring password strength. It evaluates passwords based on length, character variety, uniqueness, and penalties, producing a score from 0 to 1000.
It’s finally done with the final version being 0.2.0. I will update penalties further, but future updates will be minor.
Overall, Passcore is a pretty solid password scoring library, faster than zxcvbn and with more accurate scores than other libraries. It’s quite a big achievement for me!
Future updates might include checking all keyboard patterns rather than reading from a list; this might allow for faster runtimes, allowing for even faster bulk processing.
Thanks to anyone who helped test it! Hope this ship goes well!
Today is a big update! Version 0.2.0 is officially released (yes I added the links finally!).
And well the performance speaks for itself!
I also added two new functions for getting human readable letter grades and for improvement suggestions.
One image is of v0.1.0 performance, the other is of v0.2.0. (the one that took less time is 0.2.0)
Log in to leave a comment
It would not let me upload crates.io: https://crates.io/crates/passcore
Ok, so I was very disappointed with today’s performance, so I found some more time to keep working!
I was able to work for another hour or so, and after reading some documentation about Levenshtein distance, I was able to finish the penalties function.
I found a list of the 100k most-used passwords (link to list), and it helped out quite a bit with the penalties!
The speed was pretty slow at first (around 80ms per password), but I realized that was just the first password since it needed to load the list.
After that, it matches the speed of other crates like zxcvbn pretty closely (around 3ms per password).
Log in to leave a comment
Today I worked on documentation for quite a while. I ran into an issue where examples can’t use non-public functions, so I decided to make the helper scoring functions public. This also lets them show up in the documentation.
Overall, I didn’t get as much done as I would have liked today, but I’ll keep working on it Monday.
PS: If anyone knows how to make a new line without or taking up an additional line of comments please let me know!
Log in to leave a comment
Today I started the Passcore project and worked on designing how the library will score each part of a password. I started with length and decided to write the function before moving on to the next part of password scoring. It took about an hour but now its done!
Log in to leave a comment