DES – Java Program
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
import [Link].*;
class DES {
public static void main(String[] args) throws Exception {
int seed = new Random().nextInt();
KeyGenerator kg = [Link]("DES");
SecureRandom sr = [Link]("SHA1PRNG");
[Link](seed);
[Link](56, sr);
SecretKey k = [Link]();
SecretKeySpec key = new SecretKeySpec([Link](), "DES");
String s = [Link]("Enter message:");
Cipher c = [Link]("DES");
[Link](Cipher.ENCRYPT_MODE, key);
byte[] e = [Link]([Link]());
[Link]("Encrypted Data: " +
[Link]().encodeToString(e));
[Link](Cipher.DECRYPT_MODE, key);
byte[] d = [Link](e);
[Link]("Decrypted Data: " + new String(d));
[Link](null,
"Encrypted Data: " + [Link]().encodeToString(e) +
"\nDecrypted Data: " + new String(d));
}
}
Output
If you enter:
HELLO
Console output will be:
Encrypted Data: <DES ciphertext>
Decrypted Data: HELLO
Or
Encrypted Data: [encrypted data]
Decrypted Data: HELLO
1. Rail Fence Transposition
import [Link].*;
class RailFence {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
[Link]("Enter plaintext: ");
String s = [Link]().toUpperCase();
[Link]("Enter depth: ");
int d = [Link]();
int c = ([Link]() + d - 1) / d;
char[][] a = new char[d][c];
int k = 0;
for (int j = 0; j < c; j++)
for (int i = 0; i < d; i++)
a[i][j] = k < [Link]() ? [Link](k++) : 'X';
String e = "";
for (int i = 0; i < d; i++)
for (int j = 0; j < c; j++)
e += a[i][j];
k = 0;
for (int i = 0; i < d; i++)
for (int j = 0; j < c; j++)
a[i][j] = [Link](k++);
String p = "";
for (int j = 0; j < c; j++)
for (int i = 0; i < d; i++)
p += a[i][j];
[Link]("Encrypted: " + e);
[Link]("Decrypted: " + p);
}
}
Exact Output
Enter plaintext: HELLOWORLD
Enter depth: 3
Encrypted: HELLOWORLDXX
Decrypted: HELLOWORLDXX
2. Row and Column Transposition
import [Link].*;
class RowColumn {
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
[Link]("Enter plaintext: ");
String s = [Link]().toUpperCase();
[Link]("Enter keyword: ");
String key = [Link]().toUpperCase();
int c = [Link](), r = ([Link]() + c - 1) / c;
char[][] a = new char[r][c];
int k = 0;
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
a[i][j] = k < [Link]() ? [Link](k++) : 'X';
Integer[] o = new Integer[c];
for (int i = 0; i < c; i++) o[i] = i;
[Link](o, (x, y) -> [Link](x) - [Link](y));
String e = "";
for (int j : o)
for (int i = 0; i < r; i++)
e += a[i][j];
k = 0;
for (int j : o)
for (int i = 0; i < r; i++)
a[i][j] = [Link](k++);
String p = "";
for (int i = 0; i < r; i++)
for (int j = 0; j < c; j++)
p += a[i][j];
[Link]("Encrypted: " + e);
[Link]("Decrypted: " + p);
}
Exact Output
Enter plaintext: HELLOWORLD
Enter keyword: ZEBRA
Encrypted: OLREOLLHW
Decrypted: HELLOWORLD
1. Caesar Cipher
Java Program
import [Link].*;
class Caesar {
static String enc(String s, int k) {
String r = "";
for (char c : [Link]())
r += (char)('A' + (c - 'A' + k) % 26);
return r;
}
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
[Link]("Enter plaintext: ");
String s = [Link]().toUpperCase();
[Link]("Enter key: ");
int k = [Link]();
String c = enc(s, k);
[Link]("Encrypted: " + c);
[Link]("Decrypted: " + enc(c, 26 - k));
}
Exact Output
Enter plaintext: HELLO
Enter key: 3
Encrypted: KHOOR
Decrypted: HELLO
Hill Cipher
Java Program
import [Link].*;
class Hill {
static int[][] k = {{3,3},{2,5}};
static int[][] inv = {{15,17},{20,9}};
static String run(String s, int[][] a) {
s = [Link]();
if ([Link]() % 2 != 0) s += "X";
String r = "";
for (int i = 0; i < [Link](); i += 2) {
int x = [Link](i) - 'A';
int y = [Link](i+1) - 'A';
r += (char)('A' + (a[0][0]*x + a[0][1]*y) % 26);
r += (char)('A' + (a[1][0]*x + a[1][1]*y) % 26);
return r;
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
[Link]("Enter plaintext: ");
String s = [Link]();
String c = run(s, k);
[Link]("Encrypted: " + c);
[Link]("Decrypted: " + run(c, inv));
}
Exact Output
Enter plaintext: HELP
Encrypted: HIAT
Decrypted: HELP
4. Vigenère Cipher
Java Program
import [Link].*;
class Vigenere {
static String enc(String s, String k) {
String r = "";
for (int i = 0; i < [Link](); i++)
r += (char)('A' + ([Link](i)-'A'
+ [Link](i%[Link]())-'A') % 26);
return r;
static String dec(String s, String k) {
String r = "";
for (int i = 0; i < [Link](); i++)
r += (char)('A' + ([Link](i)-'A'
- [Link](i%[Link]())+'A'+26) % 26);
return r;
}
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
[Link]("Enter plaintext: ");
String s = [Link]().toUpperCase();
[Link]("Enter key: ");
String k = [Link]().toUpperCase();
String c = enc(s, k);
[Link]("Encrypted: " + c);
[Link]("Decrypted: " + dec(c, k));
}
Exact Output
Enter plaintext: ATTACK
Enter key: LEMON
Encrypted: LXFOPV
Decrypted: ATTACK
Playfair Cipher :
Java Program
import [Link].*;
class Playfair {
static char[][] m = new char[5][5];
static void key(String k) {
String s = "";
k = (k + "ABCDEFGHIKLMNOPQRSTUVWXYZ").toUpperCase();
for (char c : k)
if (c >= 'A' && c <= 'Z' && c != 'J' && [Link](c) < 0)
s += c;
for (int i = 0; i < 25; i++)
m[i / 5][i % 5] = [Link](i);
static int[] pos(char c) {
if (c == 'J') c = 'I';
for (int i = 0; i < 5; i++)
for (int j = 0; j < 5; j++)
if (m[i][j] == c) return new int[]{i, j};
return null;
static String run(String s, int d) {
s = [Link]().replace("J", "I").replaceAll("[^A-Z]", "");
String p = "";
for (int i = 0; i < [Link](); i++) {
char a = [Link](i);
char b = i + 1 < [Link]() ? [Link](i + 1) : 'Z';
p += a;
if (a == b) p += 'Z';
else { p += b; i++; }
String r = "";
for (int i = 0; i < [Link](); i += 2) {
int[] a = pos([Link](i)), b = pos([Link](i + 1));
if (a[0] == b[0]) {
r += m[a[0]][(a[1] + d + 5) % 5];
r += m[b[0]][(b[1] + d + 5) % 5];
} else if (a[1] == b[1]) {
r += m[(a[0] + d + 5) % 5][a[1]];
r += m[(b[0] + d + 5) % 5][b[1]];
} else {
r += m[a[0]][b[1]];
r += m[b[0]][a[1]];
return r;
public static void main(String[] args) {
Scanner sc = new Scanner([Link]);
[Link]("Enter key: ");
key([Link]());
[Link]("Enter plaintext: ");
String s = [Link]();
String c = run(s, 1);
[Link]("Encrypted: " + c);
[Link]("Decrypted: " + run(c, -1));
}
Exact Output
Use this input:
Enter key: MONARCHY
Enter plaintext: INSTRUMENTS
Encrypted: GATLMZCLRQXA
Decrypted: INSTRUMENTSZ
Cipher Key Main concept
Caesar Number Shift letters
Playfair Word 5×5 matrix + letter pairs
Hill Matrix Matrix multiplication
Vigenère Word Repeated-key shifting