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

Sécurité Java Discussion :

Hash MD5 avec MessageDigest (apache codec)


Sujet :

Sécurité Java

  1. #1
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut Hash MD5 avec MessageDigest (apache codec)
    Bonjour à tous.

    Pour les besoins d'un projet que je développe, j'ai besoin de renvoyer un utilisateur par un redirect à une URL d'un service externe. Pour que le service valide ma redirection, je dois leur envoyer un hash MD5 pour qu'ils puissent vérifier la validité

    Le hash est formé de deux paramètres que je leur envoie et d'une phrase statique.
    Par exemple, la chaine à encrypter serait:
    1testsercodeone click 1.0

    J'ai fait un bout de code en Java mais je n'arrive pas à obtenir un hash Md5 correct. Quand j'essaie de le générer online via cette web par exemple : http://7thspace.com/webmaster_tools/...5_encoder.html c'est completement différent.

    Voici mon code:
    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
     
    String idtx = "1";
    		String sercode = "testsercode";
    		String checksumPhrase = "one click 1.0";
     
    		String checksum = idtx + sercode + checksumPhrase;
     
    		byte[] checkSumBytes = checksum.getBytes("UTF-8");
     
    		MessageDigest md = MessageDigest.getInstance("MD5");
    		byte[] checkSumMD5Bytes = md.digest(checkSumBytes);
     
     
     
    		String checksumMD5 = new String(checkSumMD5Bytes, Charset.forName("UTF-8"));
     
    		System.out.println("checksum                 :"+checksum);
    		System.out.println();
    		System.out.println("checksumMD5              :"+checksumMD5);
    		System.out.println("checkSumMD5Bytes.toString:"+checkSumMD5Bytes);
    Et voici l'output:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    checksum                 :1testsercodeone click 1.0
     
    checksumMD5              :??'hV?s??V???
    checkSumMD5Bytes.toString:[B@42e816
    Pourtant si je vais sur la web, j'obtiens que le hash est :
    f114b42768560ffa73fce556b0c907e8

    Je fais quelquechose mal dans mon code, mais quoi?

    Merci d'avance pour votre aide!!!

    N.
    Nicolas
    Blogueur @ www.ABCArgent.com

  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
    Citation Envoyé par nicdo77 Voir le message
    Je fais quelquechose mal dans mon code, mais quoi?
    Convertir les bytes du MD5Sum en String.
    Normalement on les représente en hexadécimal, et c'est ce que fait le site web dont tu parles.

    MessageDigest ne fait pas partie de Apache Codec, c'est une classe de la bibliothèque Java de base.

    Si vraiment tu veux utiliser Apache Codec, la solution est toute simple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String hexaMd5sum = DigestUtils.md5Hex(checkSumBytes);
    Attention, pas utiliser juste md5Hex(String) : la conversion String -> bytes ne se ferait pas en utf-8.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Inscrit en
    Mars 2007
    Messages
    179
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 179
    Points : 97
    Points
    97
    Par défaut
    Merci!! Ca marche
    Je suis trop bête en fait, j'aurai pu du voir que c'etait en hexa!!
    Merci beaucoup beuaoucp!!
    Nicolas
    Blogueur @ www.ABCArgent.com

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

Discussions similaires

  1. [TomcaT]Config une appli J2EE avec tomcat/apache sous linux
    Par kameha dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 31/03/2006, 15h05
  2. [phpBB] Récupération des hash MD5 et login (phpbb) pour transfert
    Par julian-brokendolls dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 8
    Dernier message: 29/03/2006, 17h29
  3. Problème avec dns, apache...
    Par Michaël dans le forum Réseau
    Réponses: 3
    Dernier message: 21/02/2006, 10h23
  4. [Sécurité] pb avec user apach
    Par naourass dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2005, 13h14
  5. Travailler avec PHP / Apache / MySQL
    Par R3iTt0R dans le forum Linux
    Réponses: 22
    Dernier message: 24/06/2004, 11h03

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