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 :

MD5 différent de PHP


Sujet :

Sécurité Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Par défaut MD5 différent de PHP
    Bonjour, j'avais déja posté il y a quelques mois pour savoir comment coder en MD5 car j'en ai besoin pour mon programme. Maintenant que je dois l'utiliser, j'ai remarqué que cela ne donne pas le même résultat que le php.

    Voici le code que l'on l'a donné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String password = "password";
    MessageDigest md = MessageDigest.getInstance("MD5");
    md.update(password.getBytes());
    byte[] md5 = md.digest();
    pour refaire une String, j'ai faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String resultat = new String(md5);
    Mais moi j'aurais besoin du même codage que le PHP :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    md5("mon mot de passe");
    Comment faire? MERCI

  2. #2
    Membre Expert
    Homme Profil pro
    Dév. Java & C#
    Inscrit en
    Octobre 2002
    Messages
    1 414
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Dév. Java & C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 414
    Par défaut
    Il suffit de convertir ton array byte correctement.

    En faisant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    String resultat = new String(md5);
    , tu essaies de convertir ton array de bytes en un string.

    Exemple la valeur 32(decimal) sera convertir en un espace. Dans ton cas, tu désires la valeur 0X20(héxa).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    StringBuffer sb = new StringBuffer(2 * md5.length);
    for (int i = 0; i < md5.length; i++) {
        int value = md5[i] & 0xFF;
        sb.append(Integer.toHexString(value));
    }
    String md5String = sv.toString().toUpperCase();

  3. #3
    Membre éclairé Avatar de Belegkarnil
    Inscrit en
    Juin 2005
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 37

    Informations forums :
    Inscription : Juin 2005
    Messages : 289
    Par défaut
    OK merci beaucoup ;-)

    Je met mon code source pour ceux qui cherche :
    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
    import java.security.*;
    public class Codeur{
    	public static void main(String args[]){
    		System.out.println(MD5("test"));
    	}
    	public static String MD5(String password){
    		try{
    			MessageDigest md = MessageDigest.getInstance("MD5");
    			md.update(password.getBytes());
    			byte[] md5 = md.digest();
    			StringBuffer sb = new StringBuffer(2 * md5.length);
    			for (int i = 0; i < md5.length; i++) {
    				int value = md5[i] & 0xFF;
    				sb.append(Integer.toHexString(value));
    			}
    			return sb.toString().toUpperCase();
    		}catch(Exception e){
    			return password;
    		}
    	}
    }

  4. #4
    Membre averti
    Homme Profil pro
    Ingénieur Etude et Développement Web
    Inscrit en
    Novembre 2008
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38

    Informations professionnelles :
    Activité : Ingénieur Etude et Développement Web

    Informations forums :
    Inscription : Novembre 2008
    Messages : 18
    Par défaut
    Petite correction que j'ai du faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    for (int i = 0; i < md5.length; i++) //Conversion du array byte
    				{
     
    					int value = md5[i] & 0xFF;
    					if(Integer.toHexString(value).length()!=2) {sb.append("\u0030"); sb.append(Integer.toHexString(value));}
    					else sb.append(Integer.toHexString(value));
    					System.out.println(sb);
     
    				}
    En effet toHexString va enlever les '0' "inutiles", or nous on en a besoin, il faut donc gérer les cas où tu n'as plus qu'un chiffre. (01, 02, ... ==> 1, 2, ...) et rajouter un 0 dans ta chaine cad le "\u0030".

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

Discussions similaires

  1. Fichiers en commun pour différents projets PHP, comment faire?
    Par ClemLamb dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 11/04/2013, 12h33
  2. [MySQL] Résultat de requête SQL différent entre PHP et phpMyAdmin
    Par djsid dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 31/12/2009, 11h22
  3. Réponses: 6
    Dernier message: 25/09/2009, 13h28
  4. [MySQL] Format de date différent entre PHP et ASP
    Par lekev62 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/06/2009, 12h36
  5. Réponses: 0
    Dernier message: 15/01/2008, 10h45

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