Substitution and Transposition Cipher
Substitution and Transposition Cipher
Substitution and Transposition Cipher
Theory:
A substitution cipher is a method of encrypting by which units of plaintext are replaced with
cipher text, according to a fixed system; the "units" may be single letters (the most common),
pairs of letters, triplets of letters, mixtures of the above, and so forth. The receiver deciphers
the text by performing the inverse substitution.
Program:
import java.util.*;
class ProductCipher
{
public static void main(String args[])
{
System.out.println("Enter the input to be encrypted:");
String substitutionInput = new Scanner(System.in).nextLine();
System.out.println("Enter a number:");
int n = new Scanner(System.in).nextInt();
// Substitution encryption
StringBuffer substitutionOutput = new StringBuffer();
for(int i=0 ; i<substitutionInput.length() ; i++)
{
char c = substitutionInput.charAt(i);
substitutionOutput.append((char) (c+5));
}
System.out.println("\nSubstituted text:");
System.out.println(substitutionOutput);
// Transposition encryption
String transpositionInput = substitutionOutput.toString();
int modulus;
if((modulus = transpositionInput.length()%n) != 0)
{
modulus = n-modulus;
// ‘modulus’ is now the number of blanks/padding (X) to be appended
for(int a=modulus;a!=0;a--)
{
transpositionInput +="/";
}
}
StringBuffer transpositionOutput = new StringBuffer();
System.out.println("\nTransposition Matrix:");
for(int i=0 ; i<n ; i++)
{
for(int j=0 ; j<transpositionInput.length()/n ; j++)
{
char c = transpositionInput.charAt(i+(j*n));
System.out.print(c);
transpositionOutput.append(c);
}
System.out.println();
}
System.out.println("\nFinal encrypted text:");
System.out.println(transpositionOutput);
// Transposition decryption
n = transpositionOutput.length()/n;
StringBuffer transpositionPlaintext = new StringBuffer();
for(int i=0 ; i<n ; i++)
{
for(int j=0 ; j<transpositionOutput.length()/n ; j++)
{
char c = transpositionOutput.charAt(i+(j*n));
transpositionPlaintext.append(c);
}
}
}
}
Output:
Conclusion: