Class: Authlogic::CryptoProviders::Wordpress
- Inherits:
-
Object
- Object
- Authlogic::CryptoProviders::Wordpress
- Defined in:
- lib/authlogic/crypto_providers/wordpress.rb
Constant Summary collapse
- ITOA64 =
'./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
Class Method Summary collapse
Class Method Details
.encode_64(input, length) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/authlogic/crypto_providers/wordpress.rb', line 18 def encode_64(input, length) output = "" i = 0 while i < length value = input[i] i += 1 break if value.nil? output += ITOA64[value & 0x3f, 1] value |= input[i] << 8 if i < length output += ITOA64[(value >> 6) & 0x3f, 1] i += 1 break if i >= length value |= input[i] << 16 if i < length output += ITOA64[(value >> 12) & 0x3f, 1] i += 1 break if i >= length output += ITOA64[(value >> 18) & 0x3f, 1] end output end |
.matches?(crypted, *tokens) ⇒ Boolean
8 9 10 11 12 13 14 15 16 |
# File 'lib/authlogic/crypto_providers/wordpress.rb', line 8 def matches?(crypted, *tokens) stretches = 1 << ITOA64.index(crypted[3, 1]) plain, salt = *tokens hashed = Digest::MD5.digest(salt + plain) stretches.times do |i| hashed = Digest::MD5.digest(hashed + plain) end crypted[0, 12] + encode_64(hashed, 16) == crypted end |