IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

2 Types de MD5


Sujet :

Java

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 19
    Points
    19
    Par défaut 2 Types de MD5
    Bonjour,

    Je suis maintenant bloqué sur ce problème depuis quelques heures... Je suis sur un service d'authentification LDAP, mon taf est de recup les donnée LDAP et de vérifier les données user pour l'autoriser à se connecter.

    Récupération des données tout va bien. Le mdp est crypté, pas de problème.

    Donc connaissant le mdp en question je sais qu'en clair c'est : sneacke

    Avec le système de cryptage du LDAP cela donne : {MD5}Ms4pFPdc8wQjAwb+cAWWGw==
    justif : http://www.cafesoft.com/CSDigest/passwordDigests.jsp


    Avec le miens, trouvé sur internet, et à priori le plus courant :
    32ce2914f75cf304230306fe7005961b
    justif : http://7thspace.com/webmaster_tools/...5_encoder.html



    Je me suis dit, problème, y a forcement un problème à ma fonction...
    Et bah non car j'ai trouvé pour chaque site une validation, il y aurait 2 md5 différent ?

    Connaîtrez vous une fonction java pouvant générer des MD5 travaillant comme le 1er exemple, j'en ai installé un paquet, mais toute pour le second...

    Merci de vos éventuelles aides

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Alors commençons déjà par rappeler que MD5 n'est pas un algorithme de cryptage (ni de chiffrage d'ailleurs, en principe on dit chiffrage.) C'est un algorithme de hachage. Quand on chiffre un mot de passe on peut le déchiffrer avec la bonne clé.
    Quand on hache un mot de passe, tout ce qu'on peut faire c'est hacher d'autres mots de passes pour voir si ça produit le même hash.

    Ceci étant dit.

    Ces deux MD5 sont les mêmes. Mais voilà, un algo de hachage, ça produit du binaire, des octets. On ne peut pas mettre du binaire dans des fichiers textes, ou les copier-coller sur des forums pour se les échanger.
    Seulement on en a besoin, donc en général ce qu'on fait, c'est qu'on transforme le binaire en texte. On peut le faire de mille façons mais il en existe deux très répandues : base64 et hexadécimal.

    Ton premier exemple est en base64, le second est en hexadécimal. Ce sont deux manières différentes d'écrire le même MD5.

    Pour encoder/décoder en Base64, le plus simple est d'utiliser Apache Commons Codec.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Merci de ta réponse, c'est à peu pres ou j'en suis arrivé.
    J'ai réalisé des tests, de nombreux test.

    Sur mon text : MD5 simple
    MD5 et ensuite base 64 (ce qui se rapproche le plus de mon cde)
    Décodage par base 64 de ma donnée LDAP.

    base 64 et ensuite MD5.
    base 64 simple.

    Toute ces combinaisons ne me rendent pas mon Mdp, le probleme doit venir des bits, du nombre de bits, et .... bah c'est la mort.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Comme je l'ai dit dans mon message précédent, on ne peut pas retrouver un mot de passe à partir de son MD5. C'est un algo de hachage, pas de chiffrage. L'information originale est perdue. Finie, envolée, a plus.

    C'est évident par exemple quand on réalise qu'on peut calculer le MD5 de n'importe quoi, un mot ou une médiathèque entière, et que le MD5 fait toujours exactement 16 octets.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Zut, je ne me suis pas expliqué sur ce topic, la faute est mienne, je ne cherche pas à "décrypter" mon texte.

    Je cherche à trouver comment il a été crypté.
    Je te joins mon premier topic
    http://www.developpez.net/forums/d13...p/#post7184489

    Ma problématique étant de valider ou non le mot de passe entré (en clair) par l'utilisateur, pour cela il faut que je généralise la méthode de cryptage pour pouvoir comparer mes 2 valeurs et autoriser ou non l'authentification.

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Comme indiqué il "suffit" juste de convertir le md5 en base 64.

    Pour calculer un md5 en Java :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	public static byte[] md5(String text) throws Exception {
    		MessageDigest md = MessageDigest.getInstance("MD5");
    		return md.digest(text.getBytes("utf-8"));
    	}
    Reste à transformer ce tableau de bytes en base64.
    Il n'y a rien de standard en Java.
    Tu dois soit utiliser les librairies sun.misc (mais c'est fortement déconseillé)
    Soit utiliser une librairie externe qui te proposerait cela (c'est le cas des apache Commons il me semble).
    Exemple (déconseillé) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	public static String base64(byte[] bytes) {
    		return "{MD5}" + new sun.misc.BASE64Encoder().encode(bytes);
    	}

    Du coup tu peux hasher le mdp pour le vérifier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	String pass = base64(md5("sneacke"));

    a++

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Ce que j'aimerai passer ce topic a résolu, malheureusement les amis, j'ai déjà testé votre méthode....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    				try{
     
    					String lStringData = encode(mdpData, "MD5");
    					System.out.println(lStringData);
    					byte [] byteData = lStringData.getBytes();
    					lStringData = base64(byteData);
    					System.out.println(lStringData);
    				}
    				catch (Exception e){
    					}
    Premier result :32ce2914f75cf304230306fe7005961b
    ok tout va bien
    Deuxieme print :
    {MD5}MzJjZTI5MTRmNzVjZjMwNDIzMDMwNmZlNzAwNTk2MWI=

    Fail.

    Si c'était si simple bah j'aurai pas autant galéré, j'ai passé outre pour le moment mais va falloir que je trouve une solution, le pire c'est que quelque sites y arrivent et me sortent tout simplement que c'est du MD5 + BASE 64

    http://tomeko.net/online_tools/base64.php Ce site y arrive, LIFE IS NOT FAIR !!!

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Dude.

    On t'a dit de calculer base64(md5("sneacke")).

    Toi tu es en train de calculer base64("32ce2914f75cf304230306fe7005961b".getBytes()).

    Pas pareil.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 19
    Points
    19
    Par défaut
    Méa culpa, j'étais persuadé de devoir le convertir en bytes pour la fct.

    Résolu, merci à tous

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Type adéquat pour stocker une clef MD5
    Par steve-movi dans le forum Développement
    Réponses: 8
    Dernier message: 03/12/2014, 09h39
  2. Type adéquat pour stocker une clef MD5
    Par olibara dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 08/04/2010, 17h43
  3. Algorithme hachage type Md5 ou sha1
    Par shaun_the_sheep dans le forum Sécurité
    Réponses: 5
    Dernier message: 22/09/2006, 17h47
  4. utilisation du meta type ANY
    Par Anonymous dans le forum CORBA
    Réponses: 1
    Dernier message: 15/04/2002, 12h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo