Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1580 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  [C++ 10 lignes inside] Probleme avec programme de cryptage XOR

 


 Mot :   Pseudo :  
 
 Page :   1  2
Page Précédente
Auteur Sujet :

[C++ 10 lignes inside] Probleme avec programme de cryptage XOR

n°589706
Profil sup​primé
Posté le 12-12-2003 à 22:54:36  answer
 

:hello:  
 
je fait un petit programme de cryptage en ou exclusif et puisque j'y connait pas grand chose au c++ j'y vais doucement
au depart jai fait un prgm qui fait qu'une lettre jai pas eu de prob :D  
mais là je veux pouvoir entrer du texte et j'ai quelques probs
voila la bete:
 

Code :
  1. #include <iostream>
  2. using namespace std;
  3. int main(void)
  4. {
  5. char clai='A';
  6. int i=0;
  7. char tablo [500];
  8. char tablocryptaid [500];
  9.    cout << "Entrez Clef: \n";
  10.    cin >> clai;
  11.    cout << "Entrez Texte A Crypter: \n";
  12.    cin >> tablo;
  13.    for (i=0; i<500; i++)
  14.    {
  15.    tablocryptaid[i]=tablo[i] ^ clai;  //c la que se fait la fonction XOR
  16.    }
  17.    cout << tablocryptaid << endl;
  18.    return 0;
  19. }


notez que la cle ne fait qu'un caractere
et pour ecrire un texte pour le moment jai pas trouvé mieu que le tablo (le pb vien peut etre de la) et ce qui est chiant en + c que je peu pas mettre d'espaces :(
pis bon si y a surement plein de ptits trucs pas coherent...
mais le probleme c'est que soit j'initialise i à 1 dans le 'for' et la 'tablocryptaid' me donne rien
sit je l'initialise a 0 et la 'tablocryptaid' contient nimporte quoi (en genenral quelques bip de ma tour (caracteres foireux :??:) mais genre je met 500 fois la meme lettre ca me rend 500 lettres differentes alors que XOR devrait rendre la meme)
merci de votre aide (faut vite que je pige ca parce qu'apres je doit essayer de faire un prog qui utilise RSA...)

mood
Publicité
Posté le 12-12-2003 à 22:54:36  profilanswer
 

n°589738
hellbilly
free smile
Posté le 12-12-2003 à 23:51:48  profilanswer
 

remplace tes char [] par des string
pour lire une ligne : std::getline(cin, str)
quand a tes caracteres foireux tu t'es demandé ce que donne 'a'^'b' ?

n°589740
Profil sup​primé
Posté le 12-12-2003 à 23:54:08  answer
 

hellbilly a écrit :

remplace tes char [] par des string
pour lire une ligne : std::getline(cin, str)
quand a tes caracteres foireux tu t'es demandé ce que donne 'a'^'b' ?


 [:romf]  
a part ca si je fait un prog XOR c'est que je sait un minimum comment la fonction opere...
la genre je fait a^b ca me met 500caracteres différents les uns des autres

n°589743
chrisbk
-
Posté le 12-12-2003 à 23:58:06  profilanswer
 

Mister_K a écrit :


 [:romf]  
a part ca si je fait un prog XOR c'est que je sait un minimum comment la fonction opere...
la genre je fait a^b ca me met 500caracteres différents les uns des autres


 
j'aime ta fonction d'affichage. Affiche plutot caractere par caractere

n°589745
Profil sup​primé
Posté le 13-12-2003 à 00:02:37  answer
 

chrisbk a écrit :


 
j'aime ta fonction d'affichage. Affiche plutot caractere par caractere


:??:
comment ca

n°589748
*syl*
--&gt; []
Posté le 13-12-2003 à 00:04:37  profilanswer
 

Bah si dans ton texte y'a la lettre qui sert de clé, l'affichage s'arrêtera à cet index x^x=0

n°589752
Profil sup​primé
Posté le 13-12-2003 à 00:09:24  answer
 

ahhhhh ok :jap:
ok dans ce cas comment je peut faire pour pas que ca me casse mon texte et meme comment je peut faire pour entrer un texte dans le tablo sans que les espaces n'arretent la chaine :??: (jai pas compris le caractere par caractere je doit faire 500 fois cin ?)

n°589756
*syl*
--&gt; []
Posté le 13-12-2003 à 00:15:30  profilanswer
 

getline(cin, tonstring);
 
Edit pour pas que Taz me frappe : tu peux aussi vérifier le retour de getline() et si ça merde vérifier cin.bad() et cin.eof() pour afir en conséquences..


Message édité par *syl* le 13-12-2003 à 00:17:52
n°589759
Taz
bisounours-codeur
Posté le 13-12-2003 à 00:19:18  profilanswer
 

int main(void)
 
(void) -> ()
 
return 0; inutile car implicite
 

n°589766
Profil sup​primé
Posté le 13-12-2003 à 00:28:40  answer
 

*Syl* a écrit :

getline(cin, tonstring);
 
Edit pour pas que Taz me frappe : tu peux aussi vérifier le retour de getline() et si ça merde vérifier cin.bad() et cin.eof() pour afir en conséquences..


heu... du coup pour le "char tablo[500]" je doit mettre autre chose a la place non?

mood
Publicité
Posté le 13-12-2003 à 00:28:40  profilanswer
 

n°589768
Taz
bisounours-codeur
Posté le 13-12-2003 à 00:32:05  profilanswer
 

ben tu utilises ta string, re vois pas le problème. si pour faire ton traitement ta string doit absolument faire 500c, et bien tu la bourre

n°589769
*syl*
--&gt; []
Posté le 13-12-2003 à 00:32:21  profilanswer
 

Tu mets des string à la place des char .|

n°589772
Profil sup​primé
Posté le 13-12-2003 à 00:41:14  answer
 

je dois avoir l'air d'un autiste mais,
j'ai mis ca (je decouvre le string  [:spamafote] )

Code :
  1. {
  2. char clai='A';
  3. int i=0;
  4. string tablo[500];
  5. string tablocryptaid[500];
  6.    cout << "Entrez Clef: \n";
  7.    cin >> clai;
  8.    cout << "Entrez Texte A Crypter: \n";
  9.    getline(cin, tablo);
  10.    for (i=0; i<500; i++)
  11.    {
  12.    tablocryptaid[i]=tablo[i] ^ clai;
  13.    }


et au niveau du getline il me met une erreur comme quoi ca "does not match" (pas taper svp)
d'ailleur au nivo de la fonction XOR aussi:/
 
edit: g rien dit c bon jai enlevé les [500]


Message édité par Profil supprimé le 13-12-2003 à 00:42:28
n°589774
chrisbk
-
Posté le 13-12-2003 à 00:42:15  profilanswer
 

gargleuh
tu fais des tableau de strings la [:totoz]

n°589775
Taz
bisounours-codeur
Posté le 13-12-2003 à 00:42:17  profilanswer
 

string tablocryptaid[500];
 
euh vas y c'est quoi pour toi ça ?

n°589779
Taz
bisounours-codeur
Posté le 13-12-2003 à 00:45:05  profilanswer
 

Code :
  1. #include <iostream>
  2. #include <string>
  3. int main()
  4. {
  5.   std::string input;
  6.   char c;
  7.   std::cin >> c;
  8.   std::getline(std::cin, input);
  9.   for(std::size_t i=0; i<input.size(); ++i)
  10.     {
  11.       input[i]^=c;
  12.     }
  13. }

bon allez sinon tu vas pas dormir

n°589790
Profil sup​primé
Posté le 13-12-2003 à 00:54:00  answer
 

jcrois que je vais aller me chercher du café :sweat:

n°589804
Profil sup​primé
Posté le 13-12-2003 à 01:35:00  answer
 

help! je suis relou mais j'y arrive pas
maintenant le probleme c l'affichage de la resultant de XOR
j'ai ca

Code :
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main()
  5. {
  6. char clai='A';
  7. int i=0;
  8. std::string tablo;
  9. std::string tablocryptaid;
  10.    cout << "Entrez Clef: \n";
  11.    cin >> clai;
  12.    cout << "Entrez Texte A Crypter: \n";
  13.    std::cin >> tablo;
  14.    std::getline(std::cin, tablo);
  15.  
  16.    for (std::size_t i=0; i<tablo.size(); i++)
  17.    {
  18.    tablocryptaid[i]=tablo[i] ^ clai;
  19.    }
  20.    cout << tablocryptaid << endl;
  21. }


 
et ca me demande les deux variables mais ca n'affiche pas la resultante :/
idem avec ce que m'a fait Taz...
il doit y avoir un truc special a mettre sur le 'cout' non?

n°589806
Taz
bisounours-codeur
Posté le 13-12-2003 à 01:38:33  profilanswer
 

normal, dnas ma version y a pas d'affichage.
t'es sur de savoir ce que fait xor ?
 
       std::cin >> tablo;
       std::getline(std::cin, tablo);
 
ben tu lis 2 fois : une fois un mot, l'autre une ligne
 
ça affiche rien ?
tablocryptaid[i]=tablo[i] ^ clai;
 
boum, t'as pas tailler tablocryptaid comme il faut. -> std::string::resize
 
ensuite, t'es marrant, tablocryptaid est pas affichable puisque 'apères XOR, il contient des caracètres non-imprimables.
 
 
tu préfères pas jouer avec ROT13 ?
 

n°589915
Profil sup​primé
Posté le 13-12-2003 à 13:45:30  answer
 

bah sur ta version j'ai quand meme ajouter des cout et cin << input...
ensuite pour le resizage jsuis pas sur de tout avoir calé :/
et quand je teste le programme je m'arrange pour XORer des lettres qui tombent bien
bon jvai faire des recherches sur ROT13 :jap: sinon je laisse tomber le string et je repart sur le tablo...

n°589916
Taz
bisounours-codeur
Posté le 13-12-2003 à 13:49:29  profilanswer
 

1) reste sur les string sinon tu vas dans le mur (en fait t'y était déjà)
2) si ton but c'est de crypter une chaine de caractère (texte humainement lisible), tourne toi vers les trucs à la ROT13, Avocat, signé l'abbé, etc
3) faut se sortir les doigts et lire un peu de documentation.

n°589923
jagstang
Pa Capona ಠ_ಠ
Posté le 13-12-2003 à 14:52:50  profilanswer
 

Mister_K a écrit :


 [:romf]  
a part ca si je fait un prog XOR c'est que je sait un minimum comment la fonction opere...


+1 taz
 
Oui t'as l'air de maîtriser le sujet en effet...

n°589924
Profil sup​primé
Posté le 13-12-2003 à 15:06:30  answer
 

JagStang a écrit :


+1 taz
 
Oui t'as l'air de maîtriser le sujet en effet...


bah desolé mon minimum c'est 1^0=1 1^1=0 0^0=0 et 0^1=1  [:spamafote]  
apres j'ai pas dit que j'etait un mega pro du ou exclusif


Message édité par Profil supprimé le 13-12-2003 à 16:25:32
n°589954
*syl*
--&gt; []
Posté le 13-12-2003 à 16:23:50  profilanswer
 

Mister_K a écrit :


bah desolé mon minimum c'est 1^0=1 1^1=0 0^0=1 et 0^1=1  [:spamafote]  
apres j'ai pas dit que j'etait un mega pro du ou exclusif

Wé bah va réapprendre ton minimum [:rofl2]

n°589956
Profil sup​primé
Posté le 13-12-2003 à 16:26:29  answer
 

*Syl* a écrit :

Wé bah va réapprendre ton minimum [:rofl2]

arf ouai erreur d'innatention pour le 0^0 [:cupra]

n°589958
jagstang
Pa Capona ಠ_ಠ
Posté le 13-12-2003 à 16:27:27  profilanswer
 

c'est bien ce que je disais.... pour info, 0^0=0...
 
http://www.sciences.ch/htmlfr/anal [...] mboole.php
a+

n°589966
Profil sup​primé
Posté le 13-12-2003 à 16:43:13  answer
 

JagStang a écrit :

c'est bien ce que je disais.... pour info, 0^0=0...
 
http://www.sciences.ch/htmlfr/anal [...] mboole.php
a+


merci j'avais pas vu j'avais pas remarqué que c'etait une faute d'inattention et j'avais pas édité mon message avant que tu ne donne cette reponse

n°589971
Profil sup​primé
Posté le 13-12-2003 à 16:51:47  answer
 

bon a part ca,
je crois que le (dernier) probleme vien du fait que
          "tablocryptaid[i]=tablo[i] ^ clai;"
ne fonctionne pas
ca expliquerait pourquoi  
           cout << tablocryptaid  
ne donne rien a la fin
en effet j'ai rajouté
           tablocryptaid.resize(500, 'x');  
juste avant le cout et ca me met que des 'x' quelle que soit le texte et la clee...
alors que les premiers caracteres avant les x devrais etre le texte crypté (tout ca pour dire que le probleme ne vient donc pas du cout)


Message édité par Profil supprimé le 13-12-2003 à 16:52:48
n°589973
Taz
bisounours-codeur
Posté le 13-12-2003 à 16:54:09  profilanswer
 

...
 
'a' ^ 'b' tu crois que ça donne quoi ?

Citation :

tablocryptaid.resize(500, 'x');  
juste avant le cout et ca me met que des 'x' quelle que soit le texte et la clee...

ça me parait une bonne définition de ce que fait resize.

n°589978
Profil sup​primé
Posté le 13-12-2003 à 17:01:13  answer
 

Taz a écrit :

...
 
'a' ^ 'b' tu crois que ça donne quoi ?

Citation :

tablocryptaid.resize(500, 'x');  
juste avant le cout et ca me met que des 'x' quelle que soit le texte et la clee...

ça me parait une bonne définition de ce que fait resize.


ben a^b ca donne un coeur non :??:
ensuite le resize je croyais que c'etait sensé remplir les espaces vides du string  
genre 'abc' fait 3 caracteres et si tablocryptaid='abc' alors avec mon resize ca fait 'abcxxxxxxxxx[...]' avec 497 x
c pas ca :??:

n°589984
Taz
bisounours-codeur
Posté le 13-12-2003 à 17:03:34  profilanswer
 

[:rofl]
(je ris mais c'est nerveux je pense)

n°589985
Profil sup​primé
Posté le 13-12-2003 à 17:06:05  answer
 

Taz a écrit :

[:rofl]
(je ris mais c'est nerveux je pense)


desolé le 'string' je connais que depuis hier
apres ce que j'ai dit sur le resize je l'ais lu plus ou moins là
http://casteyde.christian.free.fr/ [...] ml#AEN5711

Citation :

 
 
string s("123" );
s.resize(10, 'a');
 
Dans cet exemple, s contient finalement la chaîne de caractères "123aaaaaaa".  


j'ai peut-etre mal interprété


Message édité par Profil supprimé le 13-12-2003 à 17:06:26
n°589986
Taz
bisounours-codeur
Posté le 13-12-2003 à 17:07:13  profilanswer
 

conseil du jour: essaie avec toutes les touches de ton clavier jusqu'a obtenir le résultat désiré

n°589999
hellbilly
free smile
Posté le 13-12-2003 à 17:18:34  profilanswer
 

Je ne comprends pas comment son truc ne plante pas avec le resize juste avant le cout.

n°590002
Taz
bisounours-codeur
Posté le 13-12-2003 à 17:19:42  profilanswer
 

hellbilly a écrit :

Je ne comprends pas comment son truc ne plante pas avec le resize juste avant le cout.

euh c'est quoi le problème ?

n°590011
hellbilly
free smile
Posté le 13-12-2003 à 17:33:26  profilanswer
 

Taz a écrit :

euh c'est quoi le problème ?


tablocryptaid[i]
...
tablocryptaid.resize()
cout << ...

n°590025
Profil sup​primé
Posté le 13-12-2003 à 18:09:10  answer
 

ca yest ca donne plus ou moins quelque chose  :)  

Code :
  1. #include <iostream>
  2. #include <string>
  3. using namespace std;
  4. int main(void)
  5. {
  6. char cle='a';
  7. int i=1;
  8. string chaine;
  9. string chainecryptee;
  10.     cin >> cle;
  11.        
  12.     getline(cin, chaine);
  13.     chaine.resize(500);
  14.    
  15.     for(i=1; i<501; i++)
  16. {
  17.     chainecryptee[i] = cle ^ chaine[i];
  18.    
  19. }
  20.     cout << chainecryptee << endl;
  21. }


 
je tient a remercier tout ceux qui ne m'ont pas fait perdre mon temps  :jap:  
il reste aussi que je ne peut pas valider séparément la cle et le texte mais c un probleme mineur

n°590027
Taz
bisounours-codeur
Posté le 13-12-2003 à 18:11:21  profilanswer
 

ignoble
1) tu ne tiens pas compte des remarque précédente -> main(void) :pfff:
2) ton programme fais plusieurs erreurs de segmentation :o

n°590028
Profil sup​primé
Posté le 13-12-2003 à 18:14:04  answer
 

Taz a écrit :

ignoble
1) tu ne tiens pas compte des remarque précédente -> main(void) :pfff:
2) ton programme fais plusieurs erreurs de segmentation :o


je cherche pas un resultat pro
tant que ca fonctionne ca me va (a la base j'y connais rien et je sais meme pas ce qu'est une erreur de segmentation  :na: )

n°590030
Taz
bisounours-codeur
Posté le 13-12-2003 à 18:15:33  profilanswer
 

Mister_K a écrit :


je cherche pas un resultat pro
tant que ca fonctionne ca me va (a la base j'y connais rien et je sais meme pas ce qu'est une erreur de segmentation  :na: )

mais ça fonctionne pas ta merde :o

mood
Publicité
Posté le   profilanswer
 

 Page :   1  2
Page Précédente

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  [C++ 10 lignes inside] Probleme avec programme de cryptage XOR

 

Sujets relatifs
probleme chez freeProblème avec ZipFile et InputStream
Problème avec for_eachprobleme sql avec insert into
Transformation XML==>Javascript : pb avec une affectation multi-lignes(newb' inside) cacher une div ?
SHELL/TCSH : Probleme sur un script automatique[Latex] Vous utilisez quelle distro *TeX (pb de dvi inside)
exif_imagetype probleme[C] Probleme exec dans un fork :D
Plus de sujets relatifs à : [C++ 10 lignes inside] Probleme avec programme de cryptage XOR


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR