diff --git a/README.md b/README.md index 415c4de6..36d1a9d0 100644 --- a/README.md +++ b/README.md @@ -18,30 +18,28 @@ Consider using zxcvbn as an algorithmic alternative to password composition poli * __More flexible__: zxcvbn allows many password styles to flourish so long as it detects sufficient complexity — passphrases are rated highly given enough uncommon words, keyboard patterns are ranked based on length and number of turns, and capitalization adds more complexity when it's unpredictaBle. * __More usable__: zxcvbn is designed to power simple, rule-free interfaces that give instant feedback. In addition to strength estimation, zxcvbn includes minimal, targeted verbal feedback that can help guide users towards less guessable passwords. +For further detail and motivation, please refer to the USENIX Security '16 [paper and presentation](https://www.usenix.org/conference/usenixsecurity16/technical-sessions/presentation/wheeler). + At Dropbox we use zxcvbn ([Release notes](https://github.com/dropbox/zxcvbn/releases)) on our web, desktop, iOS and Android clients. If JavaScript doesn't work for you, others have graciously ported the library to these languages: -* [`zxcvbn-c`](https://github.com/tsyrogit/zxcvbn-c) (C/C++) -* [`zxcvbn-cpp`](https://github.com/rianhunter/zxcvbn-cpp) (C/C++/Python/JS) -* [`nbvcxz`](https://github.com/GoSimpleLLC/nbvcxz) (Java) -* [`zxcvbn4j`](https://github.com/nulab/zxcvbn4j) (Java) -* [`zxcvbn-ios`](https://github.com/dropbox/zxcvbn-ios) (Objective-C) * [`zxcvbn-python`](https://github.com/dwolfhub/zxcvbn-python) (Python) +* [`zxcvbn-cpp`](https://github.com/rianhunter/zxcvbn-cpp) (C/C++/Python/JS) +* [`zxcvbn-c`](https://github.com/tsyrogit/zxcvbn-c) (C/C++) +* [`zxcvbn-rs`](https://github.com/shssoichiro/zxcvbn-rs) (Rust) * [`zxcvbn-go`](https://github.com/nbutton23/zxcvbn-go) (Go) +* [`zxcvbn4j`](https://github.com/nulab/zxcvbn4j) (Java) +* [`nbvcxz`](https://github.com/GoSimpleLLC/nbvcxz) (Java) * [`zxcvbn-ruby`](https://github.com/envato/zxcvbn-ruby) (Ruby) * [`zxcvbn-js`](https://github.com/bitzesty/zxcvbn-js) (Ruby [via ExecJS]) -* [`zxcvbn-php`](https://github.com/bjeavons/zxcvbn-php) (PHP) +* [`zxcvbn-ios`](https://github.com/dropbox/zxcvbn-ios) (Objective-C) * [`zxcvbn-cs`](https://github.com/mickford/zxcvbn-cs) (C#/.NET) * [`szxcvbn`](https://github.com/tekul/szxcvbn) (Scala) +* [`zxcvbn-php`](https://github.com/bjeavons/zxcvbn-php) (PHP) * [`zxcvbn-api`](https://github.com/wcjr/zxcvbn-api) (REST) -* [`zxcvbn-rs`](https://github.com/shssoichiro/zxcvbn-rs) (Rust) Integrations with other frameworks: * [`angular-zxcvbn`](https://github.com/ghostbar/angular-zxcvbn) (AngularJS) -For more motivation, see: - -http://tech.dropbox.com/?p=165 - # Installation zxcvbn detects and supports CommonJS (node, browserify) and AMD (RequireJS). In the absence of those, it adds a single function `zxcvbn()` to the global namespace.