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 :

Cryptage RSA d'un string


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 18
    Par défaut Cryptage RSA d'un string
    Salut à tous =D

    Voilà, cela fait deux jours que je cherche comment réaliser un cryptage d'un string en RSA :/ J'ai trouver une lib qui semblait convenir :

    => http://www.chilkatsoft.com/default.asp
    => http://www.example-code.com/vcpp/rsa_encryptStrings.asp

    J'ai donc essayer mais je me suis rendu compte que le fait de passer de string a const char * me faisait perdre des octets. Même en faisait maString.c_str(), j'ai remarqué que certains sautait, et moi qui ait tout en string, ca m'embete etant donné que la clé est aussi en string.

    Du coup j'aimerai savoir comment réglé ce problème, où simplement si une autre lib semblait plus adaptée =)

    Merci ^^

  2. #2
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    C'est étrange, peux-tu nous donner l'hexadécimal des octets qui sautent ?

    As-tu essayé avec maString.data() ?

    Sinon je ne vois pas d'autres méthodes de string qui pourrait t'aider.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 18
    Par défaut
    En fait, ma clé de départ fait ça :
    30 82 01 22 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05 00 03 82 01 0F 00 30 82 01 0A 02 82 01 01 00 AC 70 A8 1B 90 23 DF 43 5D 1B 05 39 0C 67 9D 15 42 50 4D 2F A2 93 3E DF F2 9A 7B 9B EF B1 C6 7B 6D 71 B9 30 55 9F 88 90 B3 C9 B5 80 50 04 AE 9E 1F 32 FB D2 39 CB C8 11 62 51 0F 93 AD FE FC A2 B5 98 A5 86 2D 87 16 B9 0A 80 95 C0 00 A2 0B 0C C1 A0 59 2E 13 48 B7 5D A0 BB 3B 06 E4 4A 17 6D 4E 33 84 DB 99 C1 33 6F F5 53 9F 23 BA 40 B3 51 9E 7A 1B 49 6A 2A B4 17 9C E2 19 1C E7 39 1B 86 AF 00 DE 5D 80 AB BB 9F 5A 65 26 F9 FD 9B CA 72 17 6A EE FB BC AE 0E EE 35 10 EF F0 C1 07 C2 F2 DE 7F 1F A1 4C 6C 65 98 BD EF 17 7C E6 27 1D B5 17 D8 50 9D 34 DF 8C D1 1D 73 40 89 0F 7E 5B D5 E5 F2 7B C2 5C 97 FD 34 7A 76 C6 EB 9E 6F 4C C7 D2 10 10 D6 06 0F 33 4C 10 35 A9 E0 0A D1 D9 B0 8B E8 03 39 CA 7B FB 35 77 F9 C7 BD 49 3E B8 F1 A1 E8 8B 7D 1E 0E A9 36 CC 4C 77 02 96 F0 7B DB 02 03 01 00 01
    Et une fois passer en BYTE* ou char*, je me retrouve avec ca :

    30 82 01 22 30 0D 06 09 2A 86 48 86 F7 0D 01 01 01 05
    Ou alors quand je le rentre en dur avec un for, j'ai l'impression d'avoir des valeur completement aléatoires :'(

    Des idées ?

  4. #4
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    00 marque la fin d'une chaîne de caractère donc si tu fait un printf, tu ne verras pas la suite.


    De plus, ce n'est pas sûr qu'il copie bien ce qu'il y a derrière l'octet 0x00

    Je pense que le mieux est de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    std::string monString;
     
    int taille = monString.size();
    char * monChar = new char[taille];
     
    std::string::iterator p = monString.begin();
    std::string::const_iterator const fin = monString.end();
     
    char * tmp = monChar;
    while(p != fin)
                *tmp++ = *p++;
    Par contre tu ne pourras pas utiliser les fonctions de string.h sur ton char *.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 18
    Par défaut
    J'avais penser au coup du 0x00 marquant la fin ma chaine de départ est stocké dans un tableau d'unsigned char *.

  6. #6
    Inactif  


    Homme Profil pro
    Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Inscrit en
    Décembre 2011
    Messages
    9 026
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant sécurité informatique — Diplômé master Droit/Économie/Gestion
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2011
    Messages : 9 026
    Par défaut
    Avec des unsigned char * ou des char *, c'est le même problème, '\0' est considéré comme la fin de la chaîne de caractère.

  7. #7
    Membre Expert

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2007
    Messages
    1 895
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 895
    Par défaut
    Ah, tiens, j'ai un jour de retard...

    Citation Envoyé par Neckara Voir le message
    00 marque la fin d'une chaîne de caractère donc si tu fait un printf, tu ne verras pas la suite.


    De plus, ce n'est pas sûr qu'il copie bien ce qu'il y a derrière l'octet 0x00

    Je pense que le mieux est de faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    std::string monString;
     
    int taille = monString.size();
    char * monChar = new char[taille];
     
    std::string::iterator p = monString.begin();
    std::string::const_iterator const fin = monString.end();
     
    char * tmp = monChar;
    while(p != fin)
                *tmp++ = *p++;
    Par contre tu ne pourras pas utiliser les fonctions de string.h sur ton char *.
    Pareil, mais en remplaçant les pointeurs nus par un std::vector<char> - c'est fait pour

    Le code équivalent est même un rien plus court :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    std::string monString;
    std::vector<char> monVec(monString.begin(), monString.end());
    De manière générale, les std::string sont utilisés pour stocker des chaines de caractères, et std::vector<char> des buffers de caractères. après cryptage, on a plus une chaîne, mais une suite de caractères qui ne sont pas tous affichables.
    [FAQ des forums][FAQ Développement 2D, 3D et Jeux][Si vous ne savez pas ou vous en êtes...]
    Essayez d'écrire clairement (c'est à dire avec des mots français complets). SMS est votre ennemi.
    Evitez les arguments inutiles - DirectMachin vs. OpenTruc ou G++ vs. Café. C'est dépassé tout ça.
    Et si vous êtes sages, vous aurez peut être vous aussi la chance de passer à la télé. Ou pas.

    Ce site contient un forum d'entraide gratuit. Il ne s'use que si l'on ne s'en sert pas.

Discussions similaires

  1. Cryptage rsa sous Delphi
    Par hocine77 dans le forum Langage
    Réponses: 5
    Dernier message: 27/12/2010, 18h30
  2. Algorithm de cryptage RSA
    Par aocaoc dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 29/12/2007, 18h26
  3. cryptage Rsa coté mobile et decryptage coté serveur
    Par Tunisia dans le forum Sécurité
    Réponses: 1
    Dernier message: 11/08/2007, 10h44
  4. Le cryptage RSA
    Par h_raf dans le forum C
    Réponses: 1
    Dernier message: 21/04/2007, 23h16
  5. [VB.NET2.0] cryptage RSA avec clef privée
    Par AP dans le forum Framework .NET
    Réponses: 4
    Dernier message: 17/04/2007, 15h35

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