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 :

Script de codage et décodage avec clé compatible UTF-8


Sujet :

Langage PHP

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut Script de codage et décodage avec clé compatible UTF-8
    Bonjour à tous.

    Je un script php de codage et de décodage avec un clé de cryptage.
    Mais le problème est que comme le mon site est encode en UTF-8
    le script me donne les caractère telle que : "�".

    Je voudrais savoir si il existe des script de de codage et de décodage avec un clé de cryptage compatible UTF-8 ?

    Merci d'avance de votre aide!

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu as un problème d'affichage des données ou de déchiffrage des données ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Non, Pas quand je crypte et décrypte dans le même script.mais pas quand je fais un copier-coller puis un décryptage.
    Quand j'encode mon script en "ISO Latin 1", tout marche bien. Mais que je le encode en "UTF-8" script, ça marche plus.

    Voici mon script :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
     
    <fieldset><legend><strong><u>Cryptage d'information avec clé* :</u></strong></legend>
    <?php
    if   (isset ($_POST['formulaire_1_cle_cryptage']) && isset ($_POST['formulaire_1_information_a_crypter']))
         {$cle_de_cryptage = $_POST['formulaire_1_cle_cryptage'];
    	  $information_a_crypte = $_POST['formulaire_1_information_a_crypter'];
          $algo = MCRYPT_BLOWFISH;
          $mode = MCRYPT_MODE_NOFB;
          // calcul des longueurs max de la clé et de l'IV
          $key_size = mcrypt_module_get_algo_key_size($algo);
          $iv_size = mcrypt_get_iv_size($algo, $mode);
          // création d'un IV de la bonne longueur débutant par exemple de iv suivi de 0
          $iv = mcrypt_create_iv($iv_size, substr("uaGx6mUahpxKLpD1DbvIReEGlBz3jEo",0,$iv_size));
          // Mise à longueur suivant l'algorithme et le mode associé
          $cle_de_cryptage = substr($cle_de_cryptage, 0, $key_size);
    	  // Créptage
    	  $information_crypte = mcrypt_encrypt($algo, $cle_de_cryptage, $information_a_crypte, $mode, $iv);
          // Décryptage
          $information_decrypte = mcrypt_decrypt($algo, $cle_de_cryptage, $information_crypte, $mode, $iv);
    	  echo ('Informations à cryptés = "'.$information_a_crypte.'"<br> Informations cryptés = "'.$information_crypte.'"<br> Information décrypté = "'.$information_decrypte.'"');
    	  unset ($_POST['formulaire_2_cle_cryptage'], $_POST['formulaire_2_information_a_crypter']);
    	  ;}
    else {
    ?>
    <form method="post">
    <ul>
    <li><strong><u>Clé de cryptage :</u></strong></li>
    <input name="formulaire_1_cle_cryptage" type="text" size="100" maxlength="256">
    </ul>
    <ul>
    <li><strong><u>Information à crypté :</u></strong>
    </li>
    <textarea name="formulaire_1_information_a_crypter" cols="100" rows="10" wrap="physical"></textarea>
    </ul>
     
    <input type="submit" value="Crypter"> <input name="" type="reset">
    </form>
    <?php
    }
    ?>
    (* = Décryptage possible)
    </fieldset>
    Je vois pas le problème?
    Merci d'avance!

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2010
    Messages
    5 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2010
    Messages : 5 380
    Points : 10 410
    Points
    10 410
    Par défaut
    As-tu essayé les fonctions utf8_decode, utf8_encode ?

  5. #5
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    nom mais j'en est entendu parler mais je n'ai pas essayer!
    C'est possible avec un clé de cryptage?

  6. #6
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 146
    Points : 9 386
    Points
    9 386
    Par défaut
    Ton fichier contenant le code est-il enregistré en UTF-8 sans BOM ?
    Car ta clé est en dur dans le fichier, donc si elle est en ANSI ou autre c'est normal que ça bug.

    « Toujours se souvenir que la majorité des ennuis viennent de l'espace occupé entre la chaise et l'écran de l'ordinateur. »
    « Le watchdog aboie, les tests passent »

  7. #7
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Dans les préférence Dreamweaver j'ai activé "Unicode 5.1 UTF-8" dans le codage par défaut. Puis dans le formulaire de normalisation Unicode, j'ai sélectionné l'option "C (Décomposition canonique suivie d'une composition canonique)" et sa marche pas! Pour la partie
    Car ta clé est en dur dans le fichier, donc si elle est en ANSI ou autre c'est normal que ça bug.
    je ne comprend pas se que tu veux dire!

  8. #8
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Pourrais-tu décrire précisément ton problème : qu'est ce que tu passes de Latin 1 vers UTF8 ? et qu'est ce que tu obtiens précisément ?

    J'ai testé ton code et déjà il ne fonctionne pas car tu utilises mal la fonction mcrypt_create_iv(), ce qui provoque moult warning.
    Une fois ce problème corrigé, que mon fichier soit en UTF8 ou en ANSI ma déchiffrage fonctionne normalement.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    C'est quoi la correction de "mcrypt_create_iv()"?

  10. #10
    Membre confirmé
    Avatar de FMaz
    Inscrit en
    Mars 2005
    Messages
    643
    Détails du profil
    Informations forums :
    Inscription : Mars 2005
    Messages : 643
    Points : 640
    Points
    640
    Par défaut
    À mon avis c'est ton 2ieme paramètre qui est erronné. la fonction s'attend à avoir une constante qui prend une valeur aléatoire, pas une chaine personnalisée fixe.

    http://php.net/manual/fr/function.mcrypt-create-iv.php

  11. #11
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Voici mon script :
    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
     
    $algorithme_de_cryptage = MCRYPT_BLOWFISH;
    	  $cle_de_crytage = $_POST['cle_de_cryptage'];
    	  $information_a_crypter = $_POST['information_a_crypter'];
    	  $mode_de_cryptage = MCRYPT_MODE_NOFB;
    	  // Calcul de la longueur maximum de la clef :
    	  $taille_cle = mcrypt_module_get_algo_key_size($algorithme_de_cryptage);
    	  $taille_iv = mcrypt_get_iv_size($algorithme_de_cryptage, $mode_de_cryptage);
    	  // Création d'un IV de la bonne longueur avec l'exemple "uaGx6mUahpxKLpD1DbvIReEGlBz3jEo" :
    	  $iv = mcrypt_create_iv($taille_iv, MCRYPT_DEV_RANDOM);
    	  // Mise en longueur de la clé :
    	  $cle_de_cryptage = substr($cle_de_cryptage, 0, $taille_cle);
    	  // Cryptage des informations :
    	  $information_crypte = mcrypt_encrypt($algorithme_de_cryptage, $cle_de_cryptage, $information_a_crypte, $mode_de_cryptage, $iv);
    	  // Affichage des information
    	  echo ('Information à crypter => "'.$information_a_crypter.'"<br>Information crypter => "'.$information_crypter.'"');
    C'est possible d'avoir la correction parce-que je ne trouve pas la solution.
    Merci d'avance

  12. #12
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Commence par lire les messages que tu as déjà eu : ton script fonctionne
    Pourrais-tu décrire précisément ton problème : qu'est ce que tu passes de Latin 1 vers UTF8 ? et qu'est ce que tu obtiens précisément ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Sous Latin 1; L'information crypté ne contient pas de caractère " � ". Donc quand je copie l'information code, et je la colle dans mon script de décryptage. Ca marche!
    Sous UTF-8; L'information crypté contient " � ". Donc quand je copie l'information code, et je la colle dans mon script de décryptage. Ca ne marche pas!

  14. #14
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    qu'est ce que tu passes de Latin 1 vers UTF8 ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    je ne comprend pas ce que tu veux dire?

  16. #16
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Qu'est ce que tu mets "sous latin ou sous UTF8" ? Tu changes quoi concretement ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  17. #17
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Quand j'encode mon fichier en UTF-8, le cryptage des informations donne une suite de caractère telle que "�".

  18. #18
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Est-ce que ta page contient une définition HTML de l'encodage ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  19. #19
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Août 2007
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Août 2007
    Messages : 24
    Points : 4
    Points
    4
    Par défaut
    Oui! Mais j'ai un doute, donc voici le code complet du fichier :
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Cyptage avec clé.</title>
    <style type="text/css">
    <!--
     
    -->
    </style>
    </head>
     
    <body>
    <fieldset>
    <legend><u><strong>Script de cryptage*</strong></u></legend>
    <?
    if   (isset ($_POST['cle_de_cryptage']) && isset ($_POST['information_a_crypter']))
         {$algorithme_de_cryptage = MCRYPT_BLOWFISH;
    	  $cle_de_crytage = $_POST['cle_de_cryptage'];
    	  $information_a_crypter = $_POST['information_a_crypter'];
    	  $mode_de_cryptage = MCRYPT_MODE_NOFB;
    	  // Calcul de la longueur maximum de la clef :
    	  $taille_cle = mcrypt_module_get_algo_key_size($algorithme_de_cryptage);
    	  $taille_iv = mcrypt_get_iv_size($algorithme_de_cryptage, $mode_de_cryptage);
    	  // Création d'un IV de la bonne longueur avec l'exemple "uaGx6mUahpxKLpD1DbvIReEGlBz3jEo" :
    	  $iv = mcrypt_create_iv($taille_iv, MCRYPT_DEV_RANDOM);
    	  // Mise en longueur de la clé :
    	  $cle_de_cryptage = substr($cle_de_cryptage, 0, $taille_cle);
    	  // Cryptage des informations :
    	  $information_crypte = mcrypt_encrypt($algorithme_de_cryptage, $cle_de_cryptage, $information_a_crypte, $mode_de_cryptage, $iv);
    	  // Affichage des information
    	  echo ('Information à crypter => "'.$information_a_crypter.'"<br>Information crypter => "'.$information_crypter.'"');}
    else { 
    ?>
    <form method="post">
    <ul>
    <li><u>Clé de cryptage :</u></li>
    <input name="cle_de_cryptage" type="text" size="100" maxlength="100" />
    <li><u>Information à crypté :</u></li>
    <textarea name="information_a_crypter" cols="100" rows="10" wrap="physical"></textarea>
    </ul>
    <input type="submit" value="Crypter">
    <input name="" type="reset">
    </form>
    <?
    ;}
    ?>
    (* = "Décryptage possible avec la clé")
    </fieldset>
    </body>
    </html>

  20. #20
    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
    Points : 44 155
    Points
    44 155
    Par défaut
    Tu affiches bien les erreurs quand tu developpes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $cle_de_cryptage = $_POST['cle_de_cryptage'];
    Sinon à part ca ton code fonctionne aussi bien en UTF8 qu'en ANSI.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. [Java] Script pour formatter un textarea avec des icones
    Par odoobe dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/09/2006, 10h30
  2. [HTML] PDF avec CSS compatible.. ça existe?
    Par MicaelFelix dans le forum Outils
    Réponses: 2
    Dernier message: 25/08/2006, 11h10
  3. Un script qui fermerait une page avec chrono ?
    Par beegees dans le forum Général JavaScript
    Réponses: 19
    Dernier message: 31/03/2006, 11h01
  4. script envoi mail et fax avec CDO
    Par RobinNono dans le forum ASP
    Réponses: 1
    Dernier message: 03/10/2005, 16h36
  5. Script test de deux chaine avec if
    Par kacedda dans le forum Linux
    Réponses: 6
    Dernier message: 02/05/2003, 16h38

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