000
01.05.2007, 11:00 Uhr
Matthias Fischer
|
Hallo Leute!
Hab ein Problem bei meinem Programm und zwar soll ich zuerst ein Array (64 Elemente) mit Werten füllen, ich hab das so gemacht, dass bei array[0] = 63 steht ...... und bei array[63] = 0, also absteigend reingespeichert...mein Problem ist, dass eben nach der Substitution es genau verkehrt rum drinnen stehen soll, also array[0] = 63 steht ...... und bei array[63] = 0!
Hier mal mein Programm:
C++: |
#include <iostream>
#define BUFFER 64
using std:: cout; using std:: endl;
class SBox { public: int subst_[BUFFER]; SBox::SBox (int subst[]); SBox::~SBox (void); int substitute (int n); };
/* Konstruktor */ SBox::SBox (int subst[]) { for (int n = 0; n < BUFFER; n++) subst_[n] = subst[n]; }
/* Dekonstruktor */ SBox::~SBox (void){ }
/* Methode, welche Wert des Array an der Stelle n zurueckgibt */ int SBox::substitute (int n) { return (subst_[n]); }
int main (int argc, char *argv[]) { int subst[BUFFER]; /* SBox-Array */ int temp; /* Zwischenspeicher */ int pos = 0; /* Position des Wertes = Index eines Array-Elementes */ /* Fuellen des Arrays mit Werten */ for (int n = 0; n < BUFFER; n++) subst[n] = BUFFER - 1 - n; /* Ausgabe des Original-Wertes an der Stelle n */ cout << "Original Wert an der " << pos << ".Stelle: " << subst[pos] << endl; /* Erzeugen des Objektes */ SBox sb = SBox (subst); /* Tauschen zweier Werte (Substitution) */ for (int n = 0; n < BUFFER; n++) { temp = subst[n]; subst[n] = subst[BUFFER - 1 - n]; subst[BUFFER - 1 - n] = temp; } /* Ausgabe des gefundenen Wertes an der Stelle n */ cout << "Neuer Wert an der " << pos << ".Stelle: " << sb.substitute (pos) << endl; return (0); }
|
Mein Problem ist also diese for-schleife, da sie meiner ansicht nach die werte vertauscht aber dann wieder rücktauscht und somit das anfangsergebnis wieder drinnen steht!
C++: |
for (int n = 0; n < BUFFER; n++) { temp = subst[n]; subst[n] = subst[BUFFER - 1 - n]; subst[BUFFER - 1 - n] = temp; }
|
Ich hoffe, jemand kann mir weiterhelfen ...danke! |