Cryptage de mot de passe

Cryptage de mot de passe - Java - Programmation

Marsh Posté le 02-10-2003 à 10:40:41    

Existe-il une fonction en Java qui permet de crypter des mots de passe ?
 
Merci

Reply

Marsh Posté le 02-10-2003 à 10:40:41   

Reply

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.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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 [:benou_grilled]


Message édité par uriel le 02-10-2003 à 10:45:31

---------------
IVG en france
Reply

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 ?

Reply

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"  :??:


Message édité par Shogun2002 le 02-10-2003 à 11:22:49
Reply

Marsh Posté le 02-10-2003 à 11:26:06    

Shogun2002 a écrit :


Eclipse me sort : "The static method isEqual(Byte[], Byte[]) from the type MessageDigest should be accessed in a static way"  :??:


Ba normal, faut faire MessageDigest.isEqual(tableau1, tableau2) [:spamafote]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 02-10-2003 à 11:31:26    

Bah, p c un tableau de Byte et encodedPassword aussi .... :??:

Reply

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)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 02-10-2003 à 11:34:37    

:whistle:


Message édité par darklord le 02-10-2003 à 11:34:47

---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 02-10-2003 à 11:36:30    

Ah oui je trop bete ... :pt1cable:

Reply

Marsh Posté le 02-10-2003 à 11:36:30   

Reply

Marsh Posté le 02-10-2003 à 11:42:37    


Pourquoi ne pas effacer ton post tout simplement ? :heink:


---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
Reply

Marsh Posté le 02-10-2003 à 11:53:24    

Krueger a écrit :


Pourquoi ne pas effacer ton post tout simplement ? :heink:


 
et pq je l'effaçerai :heink:
de quoi je me mêle ...
 
c'est un [:blueflag] déguisé et je te merde :o


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 02-10-2003 à 11:56:17    

DarkLord a écrit :


c'est un [:blueflag] déguisé et je te merde :o


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 :)


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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  :??:


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 02-10-2003 à 12:08:00    

benou a écrit :


c'est bizare : a aucun moment tu files la clef de criptage. Faut pas faire un update en passant la clef  :??:  


Citation :

public byte[] digest(byte[] input)
 
    Performs a final update on the digest using the specified array of bytes, then completes the digest computation. That is, this method first calls update(input), passing the input array to the update method, then calls digest().


:o


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

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 ???


---------------
ma vie, mon oeuvre - HomePlayer
Reply

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 :
  1. MessageDigest sha = MessageDigest.getInstance ("SHA-1" );
  2. if (args[i].equals ("-c" )) { // check passwords against digest
  3.     ++i;
  4.     String digest = args[i++];
  5.     if (digest.regionMatches (true, 0, "{SHA}", 0, 5)) {
  6.  digest = digest.substring (5); // ignore the label
  7.     } else if (digest.regionMatches (true, 0, "{SSHA}", 0, 6)) {
  8.  digest = digest.substring (6); // ignore the label
  9.     }
  10.    
  11.     byte[][] hs = split (Base64.decode(digest), 20);
  12.     byte[] hash = hs[0];
  13.     byte[] salt = hs[1];
  14.     if (verbose) System.out.println (toHex (hash) + " " +
  15.          toHex (salt));
  16.     for (; i < args.length; ++i) {
  17.  sha.reset();
  18.  sha.update (args[i].getBytes());
  19.  sha.update (salt);
  20.  byte[] pwhash = sha.digest();
  21.  if (verbose) System.out.println (toHex (pwhash));
  22.  if (! sha.isEqual (hash, pwhash)) {
  23.      System.out.println ("doesn't match: " + args[i]);
  24.  }
  25.     }


Message édité par Taiche le 02-10-2003 à 12:16:17

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 02-10-2003 à 13:10:27    

Taiche a écrit :


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.


ha ok, je savais pas ... merci :)


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed