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

C++ Discussion :

fonction de cryptage


Sujet :

C++

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Par défaut fonction de cryptage
    Bonjour à tous,


    j'ai créé la fonction de cryptage suivante:
    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
     
    char* crypter(char* chaine)
        {
            char* alphabet_normal = new char[30];
            alphabet_normal = "abcdefghijklmnopqrstuvwxyz ,;.";
            char* alphabet_secret = new char[30];
            alphabet_secret = ",;. abcdefghijklmnopqrstuvwxyz";
            //
            char* secret = new char[strlen(chaine)];
            char tmp;
            int tmp2 = 0;
            int unsigned i,j;
     
            for(i=0; i<strlen(chaine); i++)
            {
                tmp2 = -1;
                tmp = chaine[i];
                for(j=0; j<strlen(alphabet_normal); j++)
                   if(alphabet_normal[j] == tmp)
                      tmp2 = j;
                if(tmp2 >=0)
                   secret[i] =  alphabet_secret[tmp2];
                else
                   secret[i] = chaine[i];
            }
            return secret;
        };
    le problème que je rencontre se situe au niveau des fins de chaines, il m'ajoute des caractères bizares, par exemple si je veut crypter la chaine "test", je devrait avoir "paop", mais j'obtiens "paop¸"

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu as oublié le zéro terminal en allouant ta chaîne cryptée (il faut strlen() +1).

    PS: On n'utilise plus trop des char* en C++ : On passe généralement par des strings...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Par défaut
    non, ça ne change rien, les caratères que je vois ajoutés en fin de chaînes sont assez alléatoires sont différents même si je crypte deux fois de suite la même chaine...

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Tu penses à l'ajouter en fin de chaîne, au moins, le zéro terminal?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Par défaut
    le texte à crypter est récupéré d'une zone de saisie, je suppose que le zéro terminal y est, j'ai testé en le concaténant dans le programme, j'obtiens toujours le même résultat

  6. #6
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    on ne parle pas de la chaine que tu as en entrée, mais de la chaine que tu as en sortie, ajoute genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char* secret = new char[strlen(chaine)]+1;
    et apres ta boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    }
    secret[strlen(chaine)]='\0';
    return secret;
    et en effet, l'usage des string est plus que recommandé :-)

    PS : j'espere que cette fonction de cryptage est réalisé a titre d'exercice et pas pour proteger des données reellement confidentielle..

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Par défaut
    Oui oui, c'est rien qu'un exercice, pour crypter des données je pense qu'il faut passer par le code binaire.
    Le cryptage ici est bidon, c'est juste pour tester, je reprends le c++ après 2 années de non-pratique, et y'a pas à dire, c'est un sacré bon langage.

    Je comprends mieux maintenant, ça fonctionne, je vais la tenter en utilisant les strings

    Merci des conseils

  8. #8
    Membre émérite
    Inscrit en
    Janvier 2005
    Messages
    711
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 711
    Par défaut
    De rien

    Citation Envoyé par didier17062006
    pour crypter des données je pense qu'il faut passer par le code binaire.
    en fait il faut surtout passer par une fonction de cryptage eprouvée, et avec une clé !! si je t'ai posé cette question, c'est que beaucoup de gens sont assez "naifs" en ce qui concerne le cryptage, et pense que leur fonction maison "meme si elle est pas solide repoussera quand meme la plupart des petits curieux".. donc j'ai toujours le reflexe de demander quand je vois un algo de ce genre, s'il est destiné a etre utilisé en pratique, et j'essaie de repandre la "bonne parole"..

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 57
    Par défaut
    héhé, merci du conseil,
    j'avais déjà réalisé un cryptage RSA en C pour un tchat, ça fonctionnait bien

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 16/03/2016, 23h00
  2. Fonction de cryptage dans une procédure stockée.
    Par Thomshao dans le forum SQL Procédural
    Réponses: 0
    Dernier message: 05/12/2007, 16h04
  3. [Sécurité] Fonction de cryptage rapide
    Par Invité dans le forum Langage
    Réponses: 22
    Dernier message: 23/02/2006, 17h51
  4. Réponses: 1
    Dernier message: 08/02/2006, 11h18
  5. Réponses: 4
    Dernier message: 13/11/2005, 12h16

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