Cryptage de mot de passe - Java - Programmation
Marsh Posté le 02-10-2003 à 10:44:04
Ba y a des fonctions de cryptage/décryptage, oui. Va voir dans java.security et plus particulièrement la classe MessageDigest.
Marsh Posté le 02-10-2003 à 10:44:52
regarde du coté du package java.security
tout ce qui est crypt & hash y est
edit: grilled à 45 sec
Marsh Posté le 02-10-2003 à 11:02:18
Pour ensuite enregistrer le mot de passe crypté dans sa base de donnéée, vaut mieux la laisser en byte[] ou le convertir en string ?
Marsh Posté le 02-10-2003 à 11:21:27
Si encodedPassword est un byte[] et si p est aussi un byte[]
Tout les deux ont été encodé par MD5 et sont le même mot de passe.
Si je fais un test du genre :
return p.equals(encodedPassword);
va-t il me retourner une erreur ? true ? false ?
Sachant qu'en mettant ceci :
public boolean verifiePassword(String passwordTest){
try {
MessageDigest messageDigest = MessageDigest.getInstance("MD5" );
byte[] p = messageDigest.digest(passwordTest.getBytes());
return messageDigest.isEqual(p, encodedPassword);
} catch (Exception exc) {
exc.printStackTrace();
return false;
}
}
Eclipse me sort : "The static method isEqual(Byte[], Byte[]) from the type MessageDigest should be accessed in a static way"
Marsh Posté le 02-10-2003 à 11:26:06
Shogun2002 a écrit : |
Ba normal, faut faire MessageDigest.isEqual(tableau1, tableau2)
Marsh Posté le 02-10-2003 à 11:31:26
Bah, p c un tableau de Byte et encodedPassword aussi ....
Marsh Posté le 02-10-2003 à 11:32:52
Shogun2002 a écrit : Bah, p c un tableau de Byte et encodedPassword aussi .... |
Oui mais toi tu utilises une instance de MessageDigest alors que pour les méthodes statiques, il est recommandé d'utiliser directement la classe qui implémente la méthode.
Toi tu fais messageDigest.isEqual(p, encodedPassword)
Il faut faire MessageDigest.isEqual(p, encodedPassword)
Marsh Posté le 02-10-2003 à 11:34:37
Marsh Posté le 02-10-2003 à 11:42:37
Pourquoi ne pas effacer ton post tout simplement ?
Marsh Posté le 02-10-2003 à 11:53:24
Krueger a écrit : |
et pq je l'effaçerai
de quoi je me mêle ...
c'est un déguisé et je te merde
Marsh Posté le 02-10-2003 à 11:56:17
DarkLord a écrit : |
Stout facile avec MessageDigest. Ce qu'a fait Shogun2002 a l'air de marcher ; perso j'utilisais ça avec MD5 pour créer des UID et ça fonctionne assez bien sans trop de souci
Marsh Posté le 02-10-2003 à 12:05:32
c'est bizare : a aucun moment tu files la clef de criptage. Faut pas faire un update en passant la clef
Marsh Posté le 02-10-2003 à 12:08:00
benou a écrit : |
Citation : public byte[] digest(byte[] input) |
Marsh Posté le 02-10-2003 à 12:09:38
je comprend pas... pour crypter, t'as besoin d'une clef et du message à crypter. Là on passe juste le message à crypter. Où est ce qu'on fixe la clef de cryptage ???
Marsh Posté le 02-10-2003 à 12:12:53
benou a écrit : je comprend pas... pour crypter, t'as besoin d'une clef et du message à crypter. Là on passe juste le message à crypter. Où est ce qu'on fixe la clef de cryptage ??? |
Ici, on utilise MD5, c'est pas du cryptage, c'est du hashage. Donc ui, a priori tu peux setter une clé (appelé "salt", je crois) afin d'avoir un encodage différent en fonction de la clé, mais c'est pas nécessaire.
EDIT : j'ai trouvé un bout de code qui utilise le salt dans le cadre de l'algorithme SHA-1 (c'est pas de moi, hein, me demandez pas ce qu'il fait) :
Code :
|
Marsh Posté le 02-10-2003 à 13:10:27
Taiche a écrit : |
ha ok, je savais pas ... merci
Marsh Posté le 02-10-2003 à 10:40:41
Existe-il une fonction en Java qui permet de crypter des mots de passe ?
Merci