My professor specified that file_1.txt
be read 100
bytes at a time into a char array
. I produced the following snippet code :
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;
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;
}
fclose(file_pointer);
file_1.txt
reads : "test file for the project\n". I used gcc
encrypt.c
Then :
./a.out 111 file_1.txt file_2.txt
Then : ./a.out 111 file_2.txt file_3.txt
cat file_3.txt reads:
test file for the project :
v▒▒▒s▒▒ @////////▒
During the first run of the program with file_1.txt
and file_2.txt
, the print statement in the nested while loop printed:
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 104
xor'ing 111 and 101
xor'ing 111 and 32
xor'ing 111 and 112
xor'ing 111 and 114
xor'ing 111 and 111
xor'ing 111 and 106
xor'ing 111 and 101
xor'ing 111 and 99
xor'ing 111 and 116
xor'ing 111 and 10
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 118
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -88
xor'ing 111 and -31
xor'ing 111 and -94
xor'ing 111 and 2
xor'ing 111 and -120
xor'ing 111 and 127
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -57
xor'ing 111 and 115
xor'ing 111 and -33
xor'ing 111 and 2
xor'ing 111 and -120
xor'ing 111 and 127
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 1
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -19
xor'ing 111 and 9
xor'ing 111 and 64
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 47
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and 0
xor'ing 111 and -96
xor'ing 111 and 9
xor'ing 111 and 64
xor'ing 111 and 0
Where did these random
elements come from?
Initializing all elements of the buffer char array to 0 before using fread() got rid of the junk.