Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » verschlüsselungsprogramm

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
07.04.2005, 17:22 Uhr
~cryp
Gast


Ich möchte gern ein verschlüsselungsprogramm machen. Dieses soll Texte verschlüsseln.
In der Art: a = c; c = f; usw. Ein einfaches verschlüsselungsprogramm eben.
In der Variable char cvar[1000]; ist der Text gespeichert. Nun möchte ich jedes einzelne Zeichen abfragen und dann entsprechent ändern.
Wie geht das ?
Danke
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
07.04.2005, 17:26 Uhr
Oliver
S2-Pixelgeneral



C++:
for(int i=0;i<strlen(cvar);++i)
    cvar[i]+=2;


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
07.04.2005, 19:10 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


@Oli... nein so geht das nicht weil der abstand zwischen a und c ist nicht der gleiche wie zwischen c und f
zum anderen noch ne anmerkung... pack nicht strlen in die schleifenbedingung der muss jedes mal den ganzen string durchnudeln...


@cryp... wenns wild durcheinander sein soll kannst du z.b. einen lookuptable nehmen das erspart eine switchorgie...


C++:
void encrypt(char *s){
char x[]={'C','F',.....}; //in dem beispiel mal für alle 26 buchstaben
for(;*s;++s)
   if(isalpha(*s))
     *s=x[toupper(*s)-'A'];
}


--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 07.04.2005 um 19:10 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
07.04.2005, 19:19 Uhr
Oliver
S2-Pixelgeneral



Zitat:

pack nicht strlen in die schleifenbedingung der muss jedes mal den ganzen string durchnudeln...



Ja, ist mir klar, ich war aber grad etwas schreibfaul.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )

Dieser Post wurde am 07.04.2005 um 19:20 Uhr von Oliver editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
07.04.2005, 19:38 Uhr
(un)wissender
Niveauwart


Normale Compiler filtern das strlen raus, also kein Problem.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
07.04.2005, 20:50 Uhr
0xdeadbeef
Gott
(Operator)


Ich denke, die simpelste Methode für dich wäre, das mit XOR zu machen. So a la

C++:
char *codec(char *dest, size_t dest_len, char const *src, size_t src_len, char key) {
  int i;

  for(i = 0; i < dest_len && i < src_len; ++i) {
    dest[i] = src[i] ^ key;
  }

  return dest;
}



Bearbeitung von 0xdeadbeef:

Peinlicher kleiner Fehler und Korrektur: In diesem Fall kriegste natürlich keinen null-terminierten String zurück - das xor kann ja quasi überall ne null fabrizieren. Das bedeutet, die Länge musst du dir merken und bei der Entschlüsselung wieder mitgeben.


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 07.04.2005 um 21:00 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.04.2005, 00:52 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Normale Compiler filtern das strlen raus, also kein Problem


das glaub ich eher nicht... du könntest den string ja innerhalb der schleife modfizieren (strlen ist nicht zwangsweise ein konstanter ausdruck) das darf gar nicht so einfach wegoptimiert werden..
--
...fleißig wie zwei Weißbrote

Dieser Post wurde am 08.04.2005 um 00:52 Uhr von Windalf editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
08.04.2005, 11:11 Uhr
(un)wissender
Niveauwart


Ich glaube nicht, ich weiß. Wenn du den string potentiell veränderst, dann wird das nicht rausoptimiert. Der Compiler kann i.d.R. feststellen, ob du lesend oder schreibend auf einen string zugreifst.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
08.04.2005, 12:11 Uhr
ao

(Operator)



Zitat von (un)wissender:
Ich glaube nicht, ich weiß

Woher, bitte Quelle angeben. Denkst du, dass ein Compiler sowas hier merkt?

C++:
for (i = 0; i < strlen (s); i++)
{
    char *pc = s + strlen(s) / 2; // den Buchstaben in der Mitte des Strings finden ...
    *pc = 0; // und String hier terminieren.
}


ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
08.04.2005, 13:14 Uhr
Oliver
S2-Pixelgeneral



Zitat:

Normale Compiler filtern das strlen raus, also kein Problem.



Welche zählst du zu den "normalen Compilern" , gehört der MinGW auch dazu?


Bearbeitung von typecast:

TAG-korrigiert


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )

Dieser Post wurde am 08.04.2005 um 13:17 Uhr von typecast editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: