Class: Authentication::Logic::CryptoProviders::Sha1::V2
- Inherits:
-
Object
- Object
- Authentication::Logic::CryptoProviders::Sha1::V2
- Defined in:
- lib/auth/logic/crypto_providers/sha1/v2.rb
Overview
A poor choice. There are known attacks against this algorithm.
Class Attribute Summary collapse
- .join_token ⇒ Object
-
.stretches ⇒ Object
The number of times to loop through the encryption.
Class Method Summary collapse
-
.encrypt(*tokens) ⇒ Object
Turns your raw password into a Sha1 hash.
-
.matches?(crypted, *tokens) ⇒ Boolean
Does the crypted password match the tokens? Uses the same tokens that were used to encrypt.
Class Attribute Details
.join_token ⇒ Object
12 13 14 |
# File 'lib/auth/logic/crypto_providers/sha1/v2.rb', line 12 def join_token @join_token ||= "--" end |
.stretches ⇒ Object
The number of times to loop through the encryption.
18 19 20 |
# File 'lib/auth/logic/crypto_providers/sha1/v2.rb', line 18 def stretches @stretches ||= 10 end |
Class Method Details
.encrypt(*tokens) ⇒ Object
Turns your raw password into a Sha1 hash.
23 24 25 26 27 28 29 30 |
# File 'lib/auth/logic/crypto_providers/sha1/v2.rb', line 23 def encrypt(*tokens) tokens = tokens.flatten digest = tokens.shift stretches.times do digest = Digest::SHA1.digest([digest, *tokens].join(join_token)) end digest.unpack1("H*") end |
.matches?(crypted, *tokens) ⇒ Boolean
Does the crypted password match the tokens? Uses the same tokens that were used to encrypt.
34 35 36 |
# File 'lib/auth/logic/crypto_providers/sha1/v2.rb', line 34 def matches?(crypted, *tokens) encrypt(*tokens) == crypted end |