2016-05-21 1 views
2

Я создаю веб-приложение. Среди других полей в таблице User: enc_passw и salt. Каков идиоматический способ создания хэшированного/зашифрованного пароля в Clojure? Каковы наиболее надежные и достойные библиотеки?Как мне создать безопасный, зашифрованный пароль в Clojure?

Кроме того, следует ли просто конкатенировать реальный пароль и соль для расчета хэшированного/зашифрованного пароля? Например:

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

См [приятель] (https://github.com/funcool/buddy). В частности, я бы не использовал отдельное поле солей и вместо этого просто использовал функциональность в [buddy.hashers] (https://funcool.github.io/buddy-hashers/latest/). –

+0

@CurtisSummers, «приятель» предоставляет множество функций, которые мне не нужны. –

+3

Вы можете использовать 'buddy-hashers' отдельно от других библиотек друзей. Это небольшая обертка вокруг [Bouncy Castle] (https://www.bouncycastle.org/) крипто хеширования. –

ответ

1

Посмотрите на верительных реализации друга here.

Используется [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)))) 

Если вы хотите аргументацию на bcrypt, читайте Coda в here

+0

Возможно, стоит упомянуть вашу часть ссылок о том, почему соли не нужны, так как я считаю, что это сдвиг в протоколах безопасности паролей. В любом случае, хороший ответ. – DonyorM

Смежные вопросы