2016-05-21 9 views
2

Ich baue eine Webanwendung. Neben anderen Feldern in der Tabelle Benutzer gibt es: enc_passw und salt. Wie kann man in Clojure ein verschlüsseltes/verschlüsseltes Passwort erstellen? Was sind die vertrauenswürdigsten und anständigsten Bibliotheken?Wie soll ich ein sicheres, verschlüsseltes Passwort in Clojure erstellen?

Auch, sollte ich nur das echte Passwort verketten und Salz, Hash/verschlüsseltes Passwort zu berechnen? Zum Beispiel:

(secure_hash (str "my_real_pass" "my_salt")) 
+0

See [Kumpel] (https://github.com/funcool/buddy). Insbesondere würde ich kein separates Salzfeld verwenden und stattdessen nur die Funktionalität in [buddy.hashers] (https://funcool.github.io/buddy-hashers/latest/) verwenden. –

+0

@CurtisSummers, "Buddy" bietet eine Menge Funktionalität, die ich nicht brauche. –

+3

Sie können 'buddy-hashers' getrennt von den anderen Buddy-Bibliotheken verwenden. Es ist ein kleiner Wrapper um [Hüpfburg] (https://www.bouncycastle.org/) Krypto Hashing. –

Antwort

1

Werfen Sie einen Blick auf Freunds Implementierung der Berechtigungsnachweise here.

Es verwendet [org.mindrot/jbcrypt "0.3m"].

(defn hash-bcrypt 
    "Hashes a given plaintext password using bcrypt and an optional 
    :work-factor (defaults to 10 as of this writing). Should be used to hash 
    passwords included in stored user credentials that are to be later verified 
    using `bcrypt-credential-fn`." 
    [password & {:keys [work-factor]}] 
    (BCrypt/hashpw password (if work-factor 
          (BCrypt/gensalt work-factor) 
          (BCrypt/gensalt)))) 

Wenn Sie eine Argumentation auf bcrypt wollen, lesen Coda des here

+0

Es lohnt sich wahrscheinlich, Ihre Links zu erwähnen, warum Salze nicht benötigt werden, da dies eine Verschiebung der Passwort-Sicherheitsprotokolle ist, glaube ich. Wie auch immer, gute Antwort. – DonyorM

Verwandte Themen