Created
October 19, 2010 12:29
-
-
Save thhermansen/634104 to your computer and use it in GitHub Desktop.
Forklaring av Devise encryptor
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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