Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/envato/zxcvbn-ruby
Ruby port of Dropbox's zxcvbn javascript lib
https://github.com/envato/zxcvbn-ruby
Last synced: 2 days ago
JSON representation
Ruby port of Dropbox's zxcvbn javascript lib
- Host: GitHub
- URL: https://github.com/envato/zxcvbn-ruby
- Owner: envato
- License: mit
- Created: 2012-09-18T04:21:59.000Z (about 12 years ago)
- Default Branch: master
- Last Pushed: 2024-03-08T06:40:34.000Z (8 months ago)
- Last Synced: 2024-10-04T06:26:06.399Z (about 1 month ago)
- Language: Ruby
- Homepage:
- Size: 1.8 MB
- Stars: 313
- Watchers: 90
- Forks: 42
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE.txt
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-rails-security - zxcvbn-ruby - Ruby port of zxcvbn.js (Low-Budget Password Strength Estimation) (Gems / Password Strength)
README
# zxcvbn-ruby
This is a Ruby port of Dropbox's [zxcvbn.js][zxcvbn.js] JavaScript library.
## Development status [![CI Status](https://github.com/envato/zxcvbn-ruby/workflows/CI/badge.svg)](https://github.com/envato/zxcvbn-ruby/actions?query=workflow%3ACI)
`zxcvbn-ruby` is considered stable and is used in projects around [Envato][envato].
After checking out the repository, run `bundle install` to install dependencies.
Then, run `rake spec` to run the tests.To install this gem onto your local machine, run `bundle exec rake install`.
To release a new version, update the version number in `version.rb`, and then
run `bundle exec rake release`, which will create a git tag for the version,
push git commits and tags, and push the `.gem` file to
[rubygems.org](https://rubygems.org).## Getting started [![Gem version](https://img.shields.io/gem/v/zxcvbn-ruby.svg?style=flat-square)](https://github.com/envato/zxcvbn-ruby) [![Gem downloads](https://img.shields.io/gem/dt/zxcvbn-ruby.svg?style=flat-square)](https://rubygems.org/gems/zxcvbn-ruby)
Add the following to your project's `Gemfile`:
```ruby
gem 'zxcvbn-ruby', require: 'zxcvbn'
```Example usage:
```ruby
$ irb
>> require 'zxcvbn'
=> true
>> pp Zxcvbn.test('@lfred2004', ['alfred'])
#,
@match_sequence=
[#"a"}, sub_display="@ -> a", base_entropy=0.0, uppercase_entropy=0.0, l33t_entropy=1, entropy=1.0>,
#],
@password="@lfred2004",
@score=0>
=> #
>> pp Zxcvbn.test('asdfghju7654rewq', ['alfred'])
#,
@match_sequence=
[#],
@password="asdfghju7654rewq",
@score=2>
=> #
```## Testing Multiple Passwords
The dictionaries used for password strength testing are loaded each request to `Zxcvbn.test`. If you you'd prefer to persist the dictionaries in memory (approx 20MB RSS) to perform lots of password tests in succession then you can use the `Zxcvbn::Tester` API:
```ruby
$ irb
>> require 'zxcvbn'
=> true
>> tester = Zxcvbn::Tester.new
=> #
>> pp tester.test('@lfred2004', ['alfred'])
#,
@match_sequence=
[#"a"}, sub_display="@ -> a", base_entropy=0.0, uppercase_entropy=0.0, l33t_entropy=1, entropy=1.0>,
#],
@password="@lfred2004",
@score=0>
=> #
>> pp tester.test('@lfred2004', ['alfred'])
#,
@match_sequence=
[#"a"}, sub_display="@ -> a", base_entropy=0.0, uppercase_entropy=0.0, l33t_entropy=1, entropy=1.0>,
#],
@password="@lfred2004",
@score=0>
=> #
```**Note**: Storing the entropy of an encrypted or hashed value provides
information that can make cracking the value orders of magnitude easier for an
attacker. For this reason we advise you not to store the results of
`Zxcvbn::Tester#test`. Further reading: [A Tale of Security Gone Wrong](http://gavinmiller.io/2016/a-tale-of-security-gone-wrong/).## Contact
- [GitHub project](https://github.com/envato/zxcvbn-ruby)
- Bug reports and feature requests are welcome via [GitHub Issues](https://github.com/envato/zxcvbn-ruby/issues)## Maintainers
- [Pete Johns](https://github.com/johnsyweb)
- [Steve Hodgkiss](https://github.com/stevehodgkiss)## Authors
- [Steve Hodgkiss](https://github.com/stevehodgkiss)
- [Matthieu Aussaguel](https://github.com/matthieua)
- [_et al._](https://github.com/envato/zxcvbn-ruby/graphs/contributors)## License [![license](https://img.shields.io/github/license/mashape/apistatus.svg?style=flat-square)](https://github.com/envato/zxcvbn-ruby/blob/HEAD/LICENSE.txt)
`zxcvbn-ruby` uses MIT license, the same as [zxcvbn.js][zxcvbn.js] itself. See
[`LICENSE.txt`](https://github.com/envato/zxcvbn-ruby/blob/HEAD/LICENSE.txt)
for details.## Code of Conduct
We welcome contribution from everyone. Read more about it in
[`CODE_OF_CONDUCT.md`](https://github.com/envato/zxcvbn-ruby/blob/HEAD/CODE_OF_CONDUCT.md).## Contributing [![PRs welcome](https://img.shields.io/badge/PRs-welcome-orange.svg?style=flat-square)](https://github.com/envato/zxcvbn-ruby/issues)
For bug fixes, documentation changes, and features:
1. [Fork it](./fork)
1. Create your feature branch (`git checkout -b my-new-feature`)
1. Commit your changes (`git commit -am 'Add some feature'`)
1. Push to the branch (`git push origin my-new-feature`)
1. Create a new Pull RequestFor larger new features: Do everything as above, but first also make contact with the project maintainers to be sure your change fits with the project direction and you won't be wasting effort going in the wrong direction.
## About [![code with heart by Envato](https://img.shields.io/badge/%3C%2F%3E%20with%20%E2%99%A5%20by-Envato-ff69b4.svg?style=flat-square)](https://github.com/envato/zxcvbn-ruby)
This project is maintained by the [Envato engineering team][webuild] and funded by [Envato][envato].
[][envato]
Encouraging the use and creation of open source software is one of the ways we
serve our community. See [our other projects][oss] or [come work with us][careers]
where you'll find an incredibly diverse, intelligent and capable group of people
who help make our company succeed and make our workplace fun, friendly and
happy.[careers]: https://envato.com/careers/?utm_source=github
[envato]: https://envato.com?utm_source=github
[oss]: https://opensource.envato.com/?utm_source=github
[webuild]: https://webuild.envato.com?utm_source=github
[zxcvbn.js]: https://github.com/dropbox/zxcvbn