Skip to content

Instantly share code, notes, and snippets.

@thhermansen
Created October 19, 2010 12:29
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save thhermansen/634104 to your computer and use it in GitHub Desktop.
Save thhermansen/634104 to your computer and use it in GitHub Desktop.
Forklaring av Devise encryptor
require "digest/sha1"
module Devise
module Encryptors
# = Sha1
# Uses the Sha1 hash algorithm to encrypt passwords.
class Sha1 < Base
# Gererates a default password digest based on stretches, salt, pepper and the
# incoming password.
def self.digest(password, stretches, salt, pepper)
digest = pepper
# streches er en integer. Borgerpanelet er satt opp med 10 streches. Så 10.times { }
# betyr at den vil utføre koden innenfor {} ti ganger i en loop.
# digest settes til en tom streng først (det er ikke brukt pepper i borgerpanelet så langt jeg kan se).
# digest settes så 10 ganger til det metoden secure_digest returnerer.
stretches.times { digest = self.secure_digest(salt, digest, password, pepper) }
digest
end
private
# Generate a SHA1 digest joining args. Generated token is something like
# --arg1--arg2--arg3--argN--
def self.secure_digest(*tokens)
# Denne metoden spiser alle argumenter den får inn og putter de i et array
# F.eks. kaller man secure_digest("foo", "bar") blir tokens satt til ["foo", "bar"]
# array.flatten flater ut et array. F.eks. ["foo", ["bar"]] blir ["foo", "bar"].
# array.join(''): dersom ["foo", "bar"].join("--") returneres "foo--bar"
# 'string' << 'string' er egentlig bare string concatinering. Kunne vel stregt tatt brukt 'string' + 'string' der også.
::Digest::SHA1.hexdigest('--' << tokens.flatten.join('--') << '--')
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment