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

Langage PHP Discussion :

Récuperer un tableau de Byte à partir d'un String UTF8


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Récuperer un tableau de Byte à partir d'un String UTF8
    Bonjour
    Je travaille en ce moment sur un système de cryptage PHP / décryptage VB.NET ...
    Et j'aimerais en quelque sorte traduire un code VB.NET en PHP, je sais que ce ne sont pas du tout les mêmes langages, mais je suis certain que c'est possible !

    Ma fonction VB.NET :

    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
        Function Crypte(ByVal StringValue As String, ByVal Key As Integer) As String
            Dim Bytes As Byte() = System.Text.Encoding.UTF8.GetBytes(StringValue)
     
            Dim StringList As New List(Of String)
     
            For Index = Bytes.Count - 1 To 0 Step -1
                StringList.Add(CStr((Key - Bytes(Index)) * Key))
            Next
     
            Return Join(StringList.ToArray, "A")
        End Function

    Et la fonction PHP que je suis entrain de faire :

    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
    <?php
        function crypte($stringValue, $key)
        {
            $byteArray = array();
     
            //Ici, il me faudrait récupérer sous forme de tableau de Byte l'argument $stringValue (qui est en UTF8)
     
            //Ne faites pas attention à la suite, c'est du grand n'importe quoi ^^
     
            $stringArray = array();
     
            for ($i=strlen($_POST["Key"]); $i > 0; $i--)
            {
                array_push($stringArray, var)
     
     
                chr($chr);
                ord($str)
            }
     
            echo join($stringArray, "A")
        }
    ?>
    Et j'ai beau chercher, je ne trouve rien (pour faire ce qu'il y a écrit en commentaire dans la fonction PHP)

    Si vous pouvez me donner quelque piste, je serai très content
    Merci à vous et bonne journée !
    Dernière modification par Bovino ; 15/07/2013 à 08h43. Motif: Merci d'indiquer le langage utilisé ([code=xxx]) !

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut correction du code
    Il y a la fonction ord() pour ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $bytes = array();
    $len = mb_strlen($stringValue);
    for($i = 0; $i < $len; $i++){
         $bytes[] = ord(mb_substr($i ,1));
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Invité
    Invité(e)
    Par défaut
    Merci beaucoup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bytes[] = ord(mb_substr($len ,1));
    Je ne comprends pas très bien cette ligne.

    Je croyais que c'était array_push pour ajouter une valeur à un Array

    Et pourquoi n'utilise t-on pas $i, on en a pas besoin ?

    Merci
    Dernière modification par Invité ; 13/07/2013 à 10h58.

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Je croyais que c'était array_push pour ajouter une valeur à un Array
    La syntaxe [] fait la même chose en plus simple.

    Et pourquoi n'utilise t-on pas $i, on en a pas besoin ?
    $i est utilisé dans la boucle for
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Invité
    Invité(e)
    Par défaut
    Quand je fais ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            $byteArray = array();
     
            $length = mb_strlen($stringValue);
     
            for($i = 0; $i < $length; $i++)
            {
                $byteArray[] = ord(mb_substr($length ,1));
            }
     
            for($i = 0; $i < count($byteArray); $i++)
            {
                echo $byteArray[$i] . "\r\n";
            }
    J'obtiens :

    51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51 51
    Alors que je suis censé obtenir :

    76 101 32 115 116 114 105 110 103 32 115 101 99 114 101 116 32 114 101 112 114 195 169 115 101 110 116 97 110 116 32 108 101 32 115 116 97 116 101 32 100 101 32 108 39 117 116 105 108 105 115 97 116 101 117 114 32 113 117 101 32 86 66 46 78 69 84 32 100 111 105 116 32 100 195 169 99 114 121 112 116 101 114
    Je suis certain que ça vient de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ord(mb_substr($length ,1));

  6. #6
    Invité
    Invité(e)
    Par défaut
    Cependant, avec ceci :

    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
    <?php
        header ('Content-type: text/html; charset=utf-8');
     
        echo crypte("Le string secret représentant le state de l'utilisateur que VB.NET doit décrypter", 48);
     
        function crypte($stringValue, $key)
        {
            $byteArray = array();
     
            $length = mb_strlen($stringValue);
     
            for($i = 0; $i < $length; $i++)
            {
                $byteArray[] = ord(mb_substr($stringValue, $i, 1, "UTF8"));
            }
     
            for($i = 0; $i < count($byteArray); $i++)
            {
                echo $byteArray[$i] . "\r\n";
            }
        }
    ?>
    Tout marche !
    Sauf qu'il manque trois Bytes

    Car j'obtiens :

    76 101 32 115 116 114 105 110 103 32 115 101 99 114 101 116 32 114 101 112 114 195 115 101 110 116 97 110 116 32 108 101 32 115 116 97 116 101 32 100 101 32 108 39 117 116 105 108 105 115 97 116 101 117 114 32 113 117 101 32 86 66 46 78 69 84 32 100 111 105 116 32 100 195 99 114 121 112 116 101 114 0 0
    Au lieux de :

    76 101 32 115 116 114 105 110 103 32 115 101 99 114 101 116 32 114 101 112 114 195 169 115 101 110 116 97 110 116 32 108 101 32 115 116 97 116 101 32 100 101 32 108 39 117 116 105 108 105 115 97 116 101 117 114 32 113 117 101 32 86 66 46 78 69 84 32 100 111 105 116 32 100 195 169 99 114 121 112 116 101 114
    Il y a trois Bytes de différences, pourquoi
    Il ne doit pas bien digérer les accents ...

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 19/03/2012, 20h26
  2. Création d'un tableau en shell à partir d'un string
    Par jimmy4413 dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 31/05/2011, 14h00
  3. Obtenir un entier à partir d'un tableau de bytes
    Par Papy214 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 09/04/2008, 15h45
  4. Création de bitmap à partir d'un tableau de byte
    Par Phenix26 dans le forum Windows
    Réponses: 2
    Dernier message: 06/12/2007, 20h30
  5. Alimenter une image byte[] à partir d'un String
    Par SheikYerbouti dans le forum AWT/Swing
    Réponses: 18
    Dernier message: 31/10/2006, 07h54

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