2017-02-03 1 views
1

J'ai utilisé la bibliothèque Apache pour le mot de passe de hachage pour deux applications sous Linux. L'un d'eux est Pure-Ftp et un autre est mon application. Je sauvegarde manuellement le mot de passe haché dans le fichier passwd Pure-Ftp. Il fonctionne correctement et l'utilisateur peut utiliser Ftp avec un utilisateur/mot de passe donné.
Dans mon application, je veux authentifier l'utilisateur, mais il n'y a pas de fonction checkPassword (clearTextPassword, hashedPassword).Comment authentifier l'utilisateur avec SHA1 en Java

import org.apache.commons.codec.digest.Crypt; 
... 
... 
... 
String hashedValue = Crypt.crypt(clearTextPassword); 
.. 
+0

Eh bien non, vous devez * écrire * ce code. Où stockez-vous les mots de passe hachés? Ce n'est vraiment pas clair ce que vous demandez ici. (La relation entre votre mot de passe et votre FTP n'est pas claire ...) J'éviterais personnellement d'utiliser SHA-1 comme mot de passe pour tout travail sérieux. –

+0

Il ne suffit pas d'utiliser une fonction de hachage et il suffit d'ajouter un sel pour améliorer la sécurité. Au lieu de itérer sur un HMAC avec un sel aléatoire pour une durée d'environ 100ms et enregistrer le sel avec le hachage. Utilisez des fonctions telles que 'PBKDF2' (aka' Rfc2898DeriveBytes'), 'password_hash' /' password_verify', 'Bcrypt' et des fonctions similaires. Le but est que l'attaquant passe beaucoup de temps à trouver des mots de passe par force brute. Protégez vos utilisateurs est important, s'il vous plaît utiliser des méthodes de mot de passe sécurisé. – zaph

+0

J'ai pensé que SHA1 512 est sécurisé, n'est-ce pas? Je ne veux pas utiliser la fonction bash. Je veux générer un mot de passe haché une fois en Java, puis l'enregistrer dans la base de données et le fichier passwd de Pure-Ftp. – Razavi

Répondre

0

Pour vérifier le mot de passe, vous pouvez hachage donné un mot de passe simple avec savedHashedPassword comme sel:

private static boolean checkPassword(String password, String hashedPassword) { 
     String tmpHashedPassword = Crypt.crypt(password, hashedPassword); 
     return hashedPassword.equalsIgnoreCase(tmpHashedPassword); 

}

Crypt.crypt (mot de passe) Calcule le digest en utilisant la crypte la plus forte (3) algorithme. Un sel aléatoire et l'algorithme par défaut (actuellement SHA-512) sont utilisés.