Playfair.c or Playfair.cpp or Include in your report instructions on how to compile your code.

computer science


1.     Implement the Playfair cipher, in C, C++ or Java. The name of your program should be

Playfair.c or Playfair.cpp or Include in your report instructions on how to

compile your code.

The command syntax should be as follows:

playfair -e key <plaintext.txt> <ciphertext.txt>

playfair -d key <ciphertext.txt> <plaintext.txt>

where the -e option is associated with encryption and the -d option is associated with decryption.

You may assume all input is lower case without punctuation.


You should use the same convention described below regarding the encryption of diagonally related plaintext pair elements:

A pair of plaintext X1X2 is encrypted to Y1Y2

according to the following rules:

– X1X2 in the same row: Y1 and Y2 are the two

characters to the right of X1 and X2 (cyclic).

– X1X2 in the same column: Y1 and Y2 are the two

characters below X1 and X2 (cyclic).

– X1= X2 : A separating character (anything, X, Z

…) is inserted in the plaintext between the two.

This is really a pre-encryption phase.

– X1X2 different rows & columns: Y1 and Y2 are the

other two corners of the rectangle with X1 and X2

as corners. The direction we shall take for the

example is anticlockwise from the first element to

the second but this is arbitrary although we must

be consistent.


Several things to note:

-  Your program must be able to cope with special inputs, such as replacing 'i' with 'j' (or vice

versa) during the encryption/decryption

-  When inserting additional characters during the encryption, you will need to remove them

during the decryption.

-  To make your program more robust, you may add important information, such as the length

of the ciphertext. However, this should ensure that you will get the decryption process done


-  Be careful with the following sample input `zzzz'.

You also need to:

-  First, generate a random keyfile keyfile.txt.

-  Generate the ciphertext file Ctext-3.txt obtained by encrypting Ptext-1.txt under the key

in keyfile.txt.

-  In your report, describe the statistical properties of Ctext-3 and discuss how they compare

with those of Ctext-1 and Ctext-2, remembering that Ctext-1 and Ctext-3 are associated

with the same plaintext. Include a comparative graph of the letter frequency distributions.

Write your report in a file called Report2.pdf.

- Discuss a way to decrypt the Playfair cipher without using the key. Show your argument by

decrypting the ciphertext Ctext-3 assuming that you don't know the key. The discussion will

need to be written in the same file Report2.pdf.

- To test the correctness of your program, one can just simply test with

playfair -d keyfile.txt Ctext-3.txt Output.txt

where the keyfille.txt is in fact empty, and your program should do an automatic decryption

and verify whether the file Output.txt is identical with Ptext-1.txt by executing

diff Output.txt Ptext-1.txt

in Unix/Linux.


2.      Implement the S1 box from DES algorithm in Java or C++. Your program should accept one parameter, namely the input of S1 box in decimal. Then, your program must display:

_ The converted input in binary;

_ The output of S-box 1 in binary; and

_ The output of S-box 1 in decimal.

See the example below:

$ S-box1 46

The input of S-box1 in binary: 1 0 1 1 1 0

The output of S-box1 in binary: 1 0 1 1

The output of S-box1 in decimal: 11

In the above example, 46 is the input to the S-box 1.

Related Questions in computer science category