Module: Philiprehberger::Password
- Defined in:
- lib/philiprehberger/password.rb,
lib/philiprehberger/password/policy.rb,
lib/philiprehberger/password/zxcvbn.rb,
lib/philiprehberger/password/hashing.rb,
lib/philiprehberger/password/version.rb,
lib/philiprehberger/password/patterns.rb,
lib/philiprehberger/password/strength.rb,
lib/philiprehberger/password/generator.rb,
lib/philiprehberger/password/common_passwords.rb
Defined Under Namespace
Modules: CommonPasswords, Generator, Hashing, Patterns, Strength, Zxcvbn Classes: Policy
Constant Summary collapse
- VERSION =
'0.4.0'
Class Method Summary collapse
-
.common?(password) ⇒ Boolean
Check if a password appears in the common password dictionary.
-
.entropy(password) ⇒ Float
Estimated entropy of the password in bits (log2(pool_size ^ length)).
- .generate(**options) ⇒ Object
-
.hash(password, cost: 12) ⇒ Object
Hash a password using bcrypt.
-
.keyboard_patterns(password) ⇒ Object
Detect keyboard patterns, sequences, and repeated characters.
- .strength(password) ⇒ Object
-
.verify(password, hash) ⇒ Object
Verify a password against a bcrypt hash.
-
.zxcvbn(password) ⇒ Object
Perform zxcvbn-style strength estimation.
Class Method Details
.common?(password) ⇒ Boolean
Check if a password appears in the common password dictionary.
20 21 22 |
# File 'lib/philiprehberger/password.rb', line 20 def self.common?(password) CommonPasswords.include?(password.to_s.downcase) end |
.entropy(password) ⇒ Float
Estimated entropy of the password in bits (log2(pool_size ^ length)). Pool size is inferred from the character classes present.
33 34 35 |
# File 'lib/philiprehberger/password.rb', line 33 def self.entropy(password) Strength.entropy(password) end |
.generate(**options) ⇒ Object
37 38 39 |
# File 'lib/philiprehberger/password.rb', line 37 def self.generate(**) Generator.generate(**) end |
.hash(password, cost: 12) ⇒ Object
Hash a password using bcrypt. Requires the bcrypt gem to be installed.
49 50 51 |
# File 'lib/philiprehberger/password.rb', line 49 def self.hash(password, cost: 12) Hashing.hash(password, cost: cost) end |
.keyboard_patterns(password) ⇒ Object
Detect keyboard patterns, sequences, and repeated characters. Returns an array of pattern hashes.
43 44 45 |
# File 'lib/philiprehberger/password.rb', line 43 def self.keyboard_patterns(password) Patterns.detect(password) end |
.strength(password) ⇒ Object
24 25 26 |
# File 'lib/philiprehberger/password.rb', line 24 def self.strength(password) Strength.compute(password) end |