Assignment Objectives





Assignment Objectives
Practice reading characters from a file
Practice using command line input
Practice using command-line redirection of files
Practice implementing a double transposition ciphering algorithm
Assignment Summary
In this assignment, you will develop a program in C++ that encrypts a text file and decrypts a text file using a double tranposition ciphering algorithm. This algorithm is described in the Stamp textbook on pages 26-27. On the command line, the user will enter the name of the program, followed by either "-e" to encrypt or "-d" to decrypt. The text file will be submitted to the program using file redirection on the command line.
Software Requirements
The program shall read through the contents of the input file by way of standard input. This means that the user of the program shall use file redirection on the command line in order for the program to read an existing file. The program shall send its encrypted or decrypted output data to standard output.
The program shall first check the entries on the command line. If the entries are not correct, the program shall print out a usage message and terminate. If the command line entries are correct, the program shall read through the input file "character by character" to fill up a two-dimensional table. Each time the table is filled, the program shall transpose the rows (first) and columns (second) to encrypt the message, and then write the table contents to standard output in the same manner that the table was filled. For decryption, the columns shall be transposed first and then the rows. This process of filling the table, transposing the table rows and columns, and then writing out the table contents shall happen repeatedly. When the final set of characters are read from the input file, the program shall space-fill the remaining table contents so that all cells are filled before the double transposition occurs.
After the program detects the end of the input file and writes out the last characters that were read in, it shall send a message to standard error saying "Encryption is done" or "Decryption is done" and then terminate normally.
The double transposition key shall be hard-coded into the implementation of the algorithm. The two-dimensional table shall have default values of 6 rows and 4 columns. These values shall be declared as global constants near the top of the source code file. The row and column transpositions for encryption shall occur as follows:
Rows: (0, 1, 2, 3, 4, 5) -> (3, 5, 0, 2, 1, 4)

Columns: (0, 1, 2, 3) -> (3, 2, 0, 1)