Ich versuche, file_1.txt
mit einem eingegebenen Schlüssel zu verschlüsseln und das Ergebnis an file_2.txt
auszugeben. Der Professor gab an, dass die Datei in 100 Bytes gleichzeitig gelesen werden muss.Variabler int-Schlüssel, der sich unerklärlicherweise ändert, nachdem er mehrfach als XOR-Operation verwendet wurde
int main(int argc, char *argv[]){
int key;
key = atoi(argv[1]);
FILE *file_pointer;
file_pointer = fopen(argv[2], "rb");
char buffer[100];
char output[sizeof(int)][100];
int output_counter = 0;
int read_counter;
int read_elements;
int buffer_reset_counter;
for(buffer_reset_counter = 0; buffer_reset_counter < 100; buffer_reset_counter++){
buffer[buffer_reset_counter] = 0;
}
while(read_elements = fread(buffer, 1, 100, file_pointer) > 0){
read_counter = 0;
while(read_counter < 100){
printf("xor'ing %d and %d\n", key, buffer[read_counter]);
output[output_counter][read_counter] = buffer[read_counter]^key;
read_counter = read_counter + 1;
}
output_counter = output_counter + 1;
for(buffer_reset_counter = 0; buffer_reset_counter < 100; buffer_reset_counter++){
buffer[buffer_reset_counter] = 0;
}
}
fclose(file_pointer);
file_pointer = fopen(argv[3], "wb");
int write_counter = 0;
while(write_counter < output_counter){
fwrite(output[write_counter], 1, 100, file_pointer);
write_counter = write_counter + 1;
}
}
file_1.txt
ist die Zeichenfolge "test file for testing\n"
100-mal wiederholt.
Die Ausgabe der Drucke waren wie für die ersten paar hundert Drucke erwartet, aber dann der Schlüssel geändert:
xor'ing 111 and 115
xor'ing 111 and 116
xor'ing 111 and 105
xor'ing 111 and 110
xor'ing 111 and 103
xor'ing 111 and 10
xor'ing 111 and 116
xor'ing 111 and 101
xor'ing 111 and 115
xor'ing 111 and 116
xor'ing 111 and 32
xor'ing 111 and 102
xor'ing 111 and 105
xor'ing 111 and 108
xor'ing 111 and 101
xor'ing 111 and 32
xor'ing 111 and 102
xor'ing 111 and 111
xor'ing 111 and 114
xor'ing 111 and 32
xor'ing 111 and 116
xor'ing 111 and 101
xor'ing 111 and 115
xor'ing 111 and 116
xor'ing 111 and 105
xor'ing 6 and 110
xor'ing 26630 and 103
xor'ing 6383622 and 10
xor'ing 207710214 and 116
xor'ing 207710214 and 101
xor'ing 207710214 and 115
xor'ing 207710214 and 116
xor'ing 207710214 and 32
xor'ing 207710214 and 102
xor'ing 207710214 and 105
xor'ing 207710214 and 108
xor'ing 207710214 and 101
Segmentation fault (core dumped)
Ich weiß nicht, wie Schlüssel verändert. Wenn es relevant ist, printf("%d", sizeof(int));
ausgegeben 4.
Früher habe ich eine Frage (stackoverflow.com/q/47732691/905902) in Bezug auf Junk, die in die Puffer-Array, weil es nicht initialisiert wurde, bevor Sie fread(). Das Problem ist diesmal, dass der Schlüssel sich unerwartet ändert.
https://Stackoverflow.com/q/47732691/905902 duplizieren. – wildplasser
Mögliches Duplikat von [C fread() in einer kurzen Datei produziert Junk nach dem Ende der Datei] (https://stackoverflow.com/questions/47732691/c-fread-on-short-file-isproducing-junk-after -the-file-ends) – wildplasser
Das war ich früher, als ich ein Problem mit Junk-Elementen hatte, die von einem nicht initialisierten Array kamen. Das Problem besteht diesmal darin, dass sich die Schlüsselvariable unerwartet ändert. –