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 :

Conversion d'un bout de code PHP vers Java


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 40
    Points : 40
    Points
    40
    Par défaut Conversion d'un bout de code PHP vers Java
    Bonjour,

    Je dois transmettre en php une chaîne codée qu'un petit programme java doit décoder.

    Ne connaissant pas suffisamment java, quelqu'un connaitrait-il la syntaxe équivalente en java de ce petit bout de code php ?
    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
     
    <?php
    // -----------------------------------------
    // décrypte une chaine (avec la même clé de cryptage)
    // -----------------------------------------
    function decrypter($maCleDeCryptage="", $maChaineCrypter){
    	$maCleDeCryptage = md5($maCleDeCryptage);
    	$letter = -1;
    	$newstr = '';
    	$maChaineCrypter = base64_decode($maChaineCrypter);
    	$strlen = strlen($maChaineCrypter);
    	for ( $i = 0; $i < $strlen; $i++ ){
    		$letter++;
    		if ( $letter > 31 ){
    			$letter = 0;
    		}
    		$neword = ord($maChaineCrypter{$i}) - ord($maCleDeCryptage{$letter});
    		if ( $neword < 1 ){
    			$neword += 256;
    		}
    		$newstr .= chr($neword);
    	}
    	return $newstr;
    }
    ?>
    Merci !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 633
    Points
    21 633
    Par défaut
    Hum. Ça c'est pas une syntaxe, c'est tout un algorithme.
    On devrait arriver à faire ça en Java sans trop de problème, oui, mais l'idée c'est pas qu'on fasse ton travail, l'idée c'est qu'on t'aide à faire ton travail.

    Si tu ne connais strictement rien aux syntaxes Java, eh bien il va falloir les apprendre ou renoncer.
    Si connais un petit peu mais que tu ne sais pas quelles classes utiliser pour telle ou telle chose, ma foi, rien ne t'empêche de demander. Mais ça c'est tout un programme, c'est pas "une chose."

    Bon et sinon, peut-être que quelqu'un a déjà fait ceci en Java quelque part, auquel on pourrait toujours te donner le lien. Mais si c'est le cas, moi je suis pas au courant.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 40
    Points : 40
    Points
    40
    Par défaut
    Bon alors il y a un truc que je ne comprends pas.

    J'ai téléchargé la librairie Apache http://commons.apache.org/codec/
    puis fait un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    import org.apache.commons.codec.binary.Base64;
    dans mon code.

    J'ai donc testé ce morceau :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    byte[] encodedBytes = Base64.encodeBase64("192.168.0.1:186:6524395".getBytes());
    getLogger().info("encodedBytes : "+encodedBytes.toString());
    byte[] decodedBytes = Base64.decodeBase64(encodedBytes);
    getLogger().info("decodedBytes : "+decodedBytes.toString());
    Et j'obtiens :
    INFO server comment - encodedBytes : [B@58f71157
    INFO server comment - decodedBytes : [B@44939462

    C'est étrange non ?

  4. #4
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Ce n'est pas étrange, c'est expliqué sur le javadoc.

    A+.

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 40
    Points : 40
    Points
    40
    Par défaut
    Ok merci, mais dans ce cas, comment dois-je faire si je pars d'une variable de type string contenant "MTkyLjE2OC4wLjE6MTg2OjY1MjQzOTU=" (encodé en base64) et que je souhaite décodé pour obtenir la chaîne suivante "192.168.0.1:186:6524395" ?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 40
    Points : 40
    Points
    40
    Par défaut
    Je me réponds à moi même alors.

    Il faut utiliser "new String(encodedBytes)", plutôt que "encodedBytes.toString()".

    Je ne connais pas encore toutes les "subtilités" mais au moins je sais vers où aller.

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 633
    Points
    21 633
    Par défaut
    Citation Envoyé par chatlumo Voir le message
    Il faut utiliser "new String(encodedBytes)", plutôt que "encodedBytes.toString()".
    Oui.

    Idéalement, new String(encodedBytes, "us-ascii").

    Dans ton exemple ça ne change rien, parce que ton exemple ne pose pas de question de charset. Mais dans le monde réel, la question se pose presque-partout.
    Passer d'une séquence d'octets à une String (séquence de caractères,) et vice-versa, ça se fait avec un charset. Si on n'indique rien, Java prend le charset par défaut de l'environnement, et c'est presque-jamais ce qu'on veut. En principe on veut toujours un charset précis qui ne dépend de rien. Ici, je suppose qu'on veut de l'ASCII, et une erreur visible en cas de non-ASCII. Donc on demande de l'ASCII et comme ça on aura le même fonctionnement partout : erreur visible si pas ASCII.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 40
    Points : 40
    Points
    40
    Par défaut
    Merci pour le complément d'info !

Discussions similaires

  1. Conversion de ce bout de code en DotNet
    Par cd090580 dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/06/2010, 10h05
  2. Réponses: 2
    Dernier message: 25/06/2008, 14h56
  3. lien ahref sans un bout de code php
    Par a7med06 dans le forum Langage
    Réponses: 1
    Dernier message: 25/04/2008, 06h43
  4. Réponses: 9
    Dernier message: 04/07/2007, 20h27

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