0% found this document useful (0 votes)
10 views5 pages

Is LAB 1st Program

The document describes the implementation of two substitution techniques for encryption and decryption in Java: the Caesar Cipher and the Playfair Cipher. The Caesar Cipher shifts letters by a fixed number, while the Playfair Cipher uses digrams and a key table for substitution. Both algorithms are demonstrated with example code and outputs, confirming successful implementation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views5 pages

Is LAB 1st Program

The document describes the implementation of two substitution techniques for encryption and decryption in Java: the Caesar Cipher and the Playfair Cipher. The Caesar Cipher shifts letters by a fixed number, while the Playfair Cipher uses digrams and a key table for substitution. Both algorithms are demonstrated with example code and outputs, confirming successful implementation.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

1. Implement any two Substitution Techniques.

AIM: Write a Java program to perform encryption and decryption


using the
following algorithms:
a) Ceaser Cipher

ALGORITHM
1. In Ceaser Cipher each letter in the plaintext is replaced by a letter some
fixed number of positions down the alphabet.
2. For example, with a left shift of 3, D would be replaced by A, E would
become B, and so on.
3. The encryption can also be represented using modular arithmetic by first
transforming the letters into numbers, according to the scheme, A = 0, B =
1,Z = 25.
4. Encryption of a letter x by a shift n can be described mathematically as,
En(x) = (x + n) mod26
5. Decryption is performed similarly,
Dn (x)=(x - n) mod26

PROGRAM:
class caesarCipher {
public static String encode(String enc, int offset) {
offset = offset % 26 + 26;
StringBuilder encoded = new StringBuilder();
for (char i : enc.toCharArray()) {
if (Character.isLetter(i)) {
if (Character.isUpperCase(i)) {
encoded.append((char) ('A' + (i - 'A' + offset) % 26));
} else {
encoded.append((char) ('a' + (i - 'a' + offset) % 26));
}
} else {
encoded.append(i);
}
}
return encoded.toString();
}
public static String decode(String enc, int offset) {
return encode(enc, 26 - offset);
}
public static void main(String[] args) throws java.lang.Exception {
String msg = "LBRCE CSE";
System.out.println("Simulating Caesar Cipher\n------------------------");
System.out.println("Input : " + msg);
System.out.printf("Encrypted Message : ");
System.out.println(caesarCipher.encode(msg, 3));
System.out.printf("Decrypted Message : ");
System.out.println(caesarCipher.decode(caesarCipher.encode(msg, 3), 3));
}
}

Output:
Simulating Caesar Cipher
------------------------
Input : LBRCE CSE
Encrypted Message : OEUFH FVH
Decrypted Message : LBRCE CSE
RESULT:
Thus the program for ceaser cipher encryption and decryption algorithm has
been implemented and the output verified successfully.

b) Playfair Cipher
AIM:

To implement a program to encrypt a plain text and decrypt a cipher text


using play fair Cipher substitution technique.

ALGORITHM:
1. To encrypt a message, one would break the message into digrams (groups of
2 letters)
2. For example, "HelloWorld" becomes "HE LL OW OR LD".
3. These digrams will be substituted using the key table.

4. Since encryption requires pairs of letters, messages with an odd number of


characters usually append an uncommon letter, such as "X", to complete the
final digram.

5. The two letters of the digram are considered opposite corners of a rectangle
in the key table. To perform the substitution, apply the following 4 rules, in
order, to each pair of letters in the plaintext:

PROGRAM:
playfairCipher.java

import java.awt.Point;
class playfairCipher {
private static char[][] charTable;

private static Point[] positions;


private static String prepareText(String s, boolean chgJtoI) {
s = s.toUpperCase().replaceAll("[^A-Z]", "");
return chgJtoI ? s.replace("J", "I") : s.replace("Q", "");

}
private static void createTbl(String key, boolean chgJtoI) {

charTable = new char[5][5];


positions = new Point[26];
String s = prepareText(key + "ABCDEFGHIJKLMNOPQRSTUVWXYZ",

chgJtoI);
int len = s.length();

for (int i = 0, k = 0; i < len; i++) {


char c = s.charAt(i);
if (positions[c - 'A'] == null) {
charTable[k / 5][k % 5] = c;
positions[c - 'A'] = new Point(k % 5, k / 5);

k++;
}
}

}
private static String codec(StringBuilder txt, int dir) {
int len = txt.length();
for (int i = 0; i < len; i += 2) {
char a = txt.charAt(i);

char b = txt.charAt(i + 1);


int row1 = positions[a - 'A'].y;
int row2 = positions[b - 'A'].y;

int col1 = positions[a - 'A'].x;


int col2 = positions[b - 'A'].x;
if (row1 == row2) {
col1 = (col1 + dir) % 5;
col2 = (col2 + dir) % 5;

} else if (col1 == col2) {


row1 = (row1 + dir) % 5;
row2 = (row2 + dir) % 5;
} else {

int tmp = col1;


col1 = col2;

col2 = tmp;
}
txt.setCharAt(i, charTable[row1][col1]);

txt.setCharAt(i + 1, charTable[row2][col2]);
}

return txt.toString();
}
private static String encode(String s) {
StringBuilder sb = new StringBuilder(s);
for (int i = 0; i < sb.length(); i += 2) {

if (i == sb.length() - 1) {
sb.append(sb.length() % 2 == 1 ? 'X' : "");
} else if (sb.charAt(i) == sb.charAt(i + 1)) {

sb.insert(i + 1, 'X');
}
}
return codec(sb, 1);
}

private static String decode(String s) {


return codec(new StringBuilder(s), 4);
}

public static void main(String[] args) throws java.lang.Exception {


String key = "CSE";
String txt = "Security Lab"; /* make sure string length is even */ /* change J
to I */
boolean chgJtoI = true;

createTbl(key, chgJtoI);
String enc = encode(prepareText(txt, chgJtoI));
System.out.println("Simulating Playfair Cipher\n----------------------");
System.out.println("Input Message : " + txt);

System.out.println("Encrypted Message : " + enc);


System.out.println("Decrypted Message : " + decode(enc));

}
}
OUTPUT:

Simulating Playfair Cipher


----------------------

Input Message : Security Lab


Encrypted Message : EABPUGYANSEZ
Decrypted Message : SECURITYLABX
RESULT:
Thus the program for playfair cipher encryption and decryption algorithm

has been implemented and the output verified successfully.

You might also like