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

avec Java Discussion :

Décrypter un String MD5 en clair


Sujet :

avec Java

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Par défaut Décrypter un String MD5 en clair
    bonjour a tous voila j essaye de décrypter une string qui contient une Chaîne en MD5 en un String clair

    ma chaîne MD5 cc8c0a97c2dfcd73caff160b65aa39e2

    le résultat que je devrait obtenir : az

    mais cela ne fonctionne pas. merci d'avance pour votre aide

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    	public static String decryptAES(String toDecrypt, String secretKey) {
    	    String decrypted = null;
    	    try {
    	        // Instantiate the cipher
    	        SecretKeySpec secretKeySpec = new SecretKeySpec(secretKey.getBytes("UTF8"), "AES");
    	    	Cipher cipher = Cipher.getInstance(AES_TRANSFORMATION_STRING);
    	        cipher.init(Cipher.DECRYPT_MODE, secretKeySpec);
    	        byte[] original = cipher.doFinal(toDecrypt.getBytes("ISO-8859-1"));
     
    	        StringBuilder hashString = new StringBuilder();
    			for (int i = 0; i < original.length; i++)
    			{
    			        String hex = Integer.toHexString(original[i]);
    			        if (hex.length() == 1) {
    			                hashString.append('0');
    			                hashString.append(hex.charAt(hex.length() - 1));
    			        	}else{hashString.append(hex.substring(hex.length() - 2));}
    			}
     
    	        return hashString.toString();
    	    }
    	    catch (Exception e) {
    	        e.printStackTrace();
    	        System.out.println("Impossible to decrypt with AES algorithm: string=(" + toDecrypt + ") message=(" + e.getMessage() + ")");
    	    }
    	    return decrypted;
    	}
    String toDecrypt, String secretKey à l appel de la fonction je leur passe la chaine cryter en MD5

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Par défaut
    MD5 est un algorithme de hashage non réversible.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
    Que la force de la puissance soit avec le courage de ta sagesse.

  3. #3
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 251
    Par défaut
    Comprends pas, c'est ta clef secrète qui est en MD5 ou ta chaîne à décrypter ?
    Dinobogan a raison, MD5 est un algo de hashage, pas de cryptage.
    Une fois que tu as laissé le Cipher décrypter ta chaîne de caractères il n'ya a pas d'autres opérations à faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    byte[] original = cipher.doFinal(toDecrypt.getBytes("ISO-8859-1"));
    return new String(original);

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Par défaut
    Citation Envoyé par dinobogan Voir le message
    MD5 est un algorithme de hashage non réversible.
    oui mais il y a des sites internet qui le propose donc je me demande si en java c est possible?

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Par défaut
    Citation Envoyé par NoClassDefFound Voir le message
    Comprends pas, c'est ta clef secrète qui est en MD5 ou ta chaîne à décrypter ?
    Dinobogan a raison, MD5 est un algo de hashage, pas de cryptage.
    Une fois que tu as laissé le Cipher décrypter ta chaîne de caractères il n'ya a pas d'autres opérations à faire.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ...
    byte[] original = cipher.doFinal(toDecrypt.getBytes("ISO-8859-1"));
    return new String(original);
    oui mais donc en java il n est pas possible de ré-obtenir le mot de passe en MD5 en clair?

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 251
    Par défaut
    Non ce n'est pas possible ou alors cela s'appelle du hacking
    AES est largement assez solide sans que tu ais besoin en plus de hasher le mot de passe, la seule chose à voire est: est-ce que tes mots de passe doivent être décryptables ou non

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Par défaut
    Citation Envoyé par NoClassDefFound Voir le message
    Non ce n'est pas possible ou alors cela s'appelle du hacking
    AES est largement assez solide sans que tu ais besoin en plus de hasher le mot de passe, la seule chose à voire est: est-ce que tes mots de passe doivent être décryptables ou non
    je ne comprend pas bien par ce que tu veux dire par la?

    la seule chose à voire est: est-ce que tes mots de passe doivent être décryptables ou non

  8. #8
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 577
    Par défaut
    Citation Envoyé par seb759 Voir le message
    oui mais donc en java il n est pas possible de ré-obtenir le mot de passe en MD5 en clair?
    Si, mais en faisant une recherche Google sur le MD5 en question, pas en essayant de calculer la solution. Ce serait bien trop long.
    Java ou autre chose, même combat.

    Pour éviter ça, il suffit de saler les mots de passes. Du genre "Ahah, Google dit que ce hachage MD5 est obtenu avec le mot de passe 'az' ! Nous pouvons passer !" "Ouais, sauf que le mot de passe en question a obligation de commencer par 0x57F5, choisi au hasard, et que ce n'est pas le cas de 'az'."
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 15
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Si, mais en faisant une recherche Google sur le MD5 en question, pas en essayant de calculer la solution. Ce serait bien trop long.
    Java ou autre chose, même combat.

    Pour éviter ça, il suffit de saler les mots de passes. Du genre "Ahah, Google dit que ce hachage MD5 est obtenu avec le mot de passe 'az' ! Nous pouvons passer !" "Ouais, sauf que le mot de passe en question a obligation de commencer par 0x57F5, choisi au hasard, et que ce n'est pas le cas de 'az'."
    ok merci de l info donc pour decrypter un Mot de passe hacher en MD5 et le rendre normal en java je laisse tomber

  10. #10
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Citation Envoyé par seb759 Voir le message
    ok merci de l info donc pour decrypter un Mot de passe hacher en MD5 et le rendre normal en java je laisse tomber
    Quel que soit le language, tu laisse tomber

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    802
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 802
    Par défaut
    Je ne suis pas spécialiste en sécurité, mais de ce que je sais, MD5 est algorithme de hashage dont la vocation est effectivement, comme tout algorithme de hashage, d'être non réversible.

    Cependant, cela fait un certain nombre d'années que cet algo a été cracké. A partir d'une empreinte MD5, on sait maintenant générer un message qui aura la même empreinte, et cela en quelques secondes avec une bonne bécane. Et c'est cela l'essentiel. Le message d'origine n'a aucune importance puisque l'authentification se fait sur le MD5. C'est cela que permettent de faire certains sites internet.

    Je suis sûr qu'en cherchant bien, tu trouveras la technique utilisée pour cracker MD5 car ce ne sont pas des "hackers" mais des chercheurs en sécurité qui sont à l'origine de cet exploit.

  12. #12
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    251
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 251
    Par défaut
    J'ai parlé de hacking, c'est un raccourci j'en conviens, mais tu ne m'ôteras pas de l'idée que cela n'a pas de sens de vouloir contourner un mécanisme de hash.
    Cela revient a exploiter une vulnérabilité de l'algorithme pour arriver à ses fins, c'est anti-sécurité au possible.
    Si tu as besoin de réversibilité (récupérer l'information en clair), tu cryptes, si ce n'est pas le cas, tu signes.
    Si l'utilisateur perd son mot de passe, tu lui en regénères un des fois que l'autre ait été compromis.
    Si les contraintes de sécurité l'exigent, de l'AES me paraît largement assez solide bien qu'avec quelques milliers d'années et une grosse puissance de calcul tu puisses aussi compromettre une clef AES.
    Dans l'exemple de seb759, la chaîne est déjà cryptée en AES, je ne vois donc pas l'utilité en plus de vouloir "déhasher" la chaîne MD5.
    Quant aux chercheurs, ben ils font leur boulot en s'attaquant a tous les algorithmes de hash ou de cryptage pour vérifier leur solidité.

  13. #13
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    Citation Envoyé par verbose Voir le message
    Cependant, cela fait un certain nombre d'années que cet algo a été cracké. A partir d'une empreinte MD5, on sait maintenant générer un message qui aura la même empreinte, et cela en quelques secondes avec une bonne bécane. Et c'est cela l'essentiel.
    Certes la collision est une faille de sécurité qui permettrai de falsifier une signature, sauf que ça fait très longtemps que l'on sait que md5 est vulnérable à ce niveau et que ça ne viendrait a l'idée a personne de l'utiliser pour ça.

    Pour chiffrer un mot de passe, le fait que l'on sache trouver une collision n'a pas vraiment d’intérêt car, il faudrait déjà connaitre le mot de passe de base pour la trouver et que le système serait déjà compromis depuis longtemps.

  14. #14
    Membre émérite Avatar de JoeChip
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    536
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 536
    Par défaut
    Euh, je me trompe ou bien le MD5 a bien moins de bits que le message d'origine ? C'est juste un hash quoi, ce n'est pas un chiffrage : en fait il y a "plein" de chaînes qui ont le même MD5. Du coup forcément il y a une possibilité de collision, quoi... Mais ça n'a aucun sens de vouloir déchiffrer un MD5... Ou de le cracker... La possibilité de collision est inhérente au hashage, tout le monde le sait dès le départ. Sinon il suffirait de rehasher jusqu'à ce qu'il ne reste plus qu'un bit

    Quant à "hacker"... euh hacker ça veut juste dire "utiliser quelque chose d'une façon qui n'était pas prévue au départ", par extension ça peut vouloir dire effectivement exploiter des failles, mais bon...

  15. #15
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    Le fait qu'il y ait des collisions est en effet inévitable dès que le message hashé est plus grand que le hash lui même. Mais suivant l'utilisation, le fait que l'on puisse prévoir ces collisions peut constituer un problème.
    Pour une signature électronique par exemple ca permettrait de faire passer un document falsifié pour un original.

    Un algorithme a des problèmes de collisions si il y a une méthode connue pour qu'à partir d'une valeur A l'on puisse déterminer une valeur B différente de A telle que hashage(A) = hashage(B).
    Même sur un algorithme de hashage dit sur, on sait bien qu'il existe de telles valeurs, mais on ne sait pas les déterminer dans un délai raisonnable.

    On sait prévoir les collisions avec MD5 depuis quelque temps maintenant, et c'est pour cela qu'en matière de sécurité, on conseille généralement d'autre algorithmes, pour lequels on ne sait pas prévoir les collisions.
    Ceci dit dans le problème du sujet : coder les mots de passe en base, les collisions ne sont pas un souci est md5 peut donc être utilisé.

  16. #16
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    765
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 765
    Par défaut
    Bonjour,

    Ce que tu veux faire est possible en théorie sur MD5, retrouver les mots de passe à l'aide du hash. Mais il va te falloir des années de calcul, car comme déjà précisé, on ajoute un 'sel' à la clé pour contrer les attaques avec des tables pré-calculées.

    En pratique à l'aide de Rainbow Table on parviens à un résultat. C'est une technique des années 80, mis en pratique pour casser les accès wifi en WPA. Cela fonctionne bien à condition de connaitre le 'sel' et le hash du mot de passe. Ce qui est le cas avec le wifi.

    Dans l'actualité ce qui est arrivé au site Battle.net il y a peu de temps, on à vu des pirates qui ont récupéré les hashs de très nombreux mot de passe. Mais décoder chaque mot de passe prendra beaucoup de temps, car le 'sel' utilisé était différent pour chacun.

    En utilisant un algorithme de hash plus robuste encore, comme SHA256, tout ceci devient impossible en un temps 'humain' , pour l'instant.

  17. #17
    Membre Expert Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 679
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 679
    Par défaut
    A noter aussi que les rainbow tables ne permettent de trouver que les mots de passe simples, si le mot de passe est suffisamment complexe, elle ne donneront rien.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2012, 15h12
  2. Décrypter un String
    Par assouma01 dans le forum Sécurité
    Réponses: 5
    Dernier message: 05/04/2009, 23h55
  3. Retrouver texte clair à partir d'un hash MD5
    Par webrider dans le forum Administration
    Réponses: 4
    Dernier message: 06/09/2006, 17h45
  4. '\r\n' dans une String -> apparait en clair dans le fichi
    Par Ecologisto dans le forum Langage
    Réponses: 4
    Dernier message: 20/03/2006, 12h38
  5. Réponses: 17
    Dernier message: 19/01/2006, 13h51

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