Skip to main content

Vigenère cipher

After a long time, I've been doing some coding, well I was teaching.I had to do Vigenère cipher in Java.

First of all, What is "Vigenère cipher"?
The Vigenère cipher is a method of encrypting alphabetic text by using a series of interwoven Caesar ciphers based on the letters of a keyword. It is a form of polyalphabetic substitution (Wikipedia

There are a lot of methods for creating this Encryption method. For those who know how to code with OOP Principles, this code may look like Babies Rusk. 😋

We can code this in two ways.
Method 1
We use the Vigenère Matrix to find the Cipher Text. We will create the Matrix through looping and row will be either plaintext and column will be key string.

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.util.*;
public class Vigenere
{
 public static void main(String [] args)
 {
  Scanner scan = new Scanner (System.in);
  System.out.print("Enter the message= ");
  String plain = scan.nextLine();
  plain=plain.toUpperCase();
  System.out.print("Enter the key= ");
  String key = scan.nextLine();
  key=key.toUpperCase();
  char [][] vignerematrix = new char [26][26];
  char [] alp = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
  int num = 0;
  int t = 0;
  for(int i=0;i<=25;i++)
  {
   for (int j=0;j<=25;j++)
   {
    num = (i+j)%26;
    vignerematrix [i][j] = alp[num]; 
   }
  }
  int strlen = plain.length();
  int keylen = key.length();
  char onstr = 'a';
  char onkeyey = 'a';
  for(int i=0;i<strlen;i++)
  {
   onstr = plain.charAt(i);
   onkeyey = key.charAt(i%keylen);
   int row=0;
   int col=0;
   
   for(int j=0;j<26;j++)
   {
    if(onstr == alp[j])
    {
     row = j;
     break;
    }
   }
   
   for(int j=0;j<26;j++)
   {
    if(onkeyey == alp[j])
    {
     col = j;
     break;
    }
   }
   System.out.print(vignerematrix[row][col]);
  }
 } 
}




Method 2
Calculate the Cipher key with adding the Plain text characters and key characters in order and finding the Cipher text through.

1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import java.util.*;
public class VigenereSimplified
{
 public static void main(String [] args)
 {
  Scanner scan = new Scanner (System.in);
  System.out.print("Enter the message= ");
  String plain = scan.nextLine();
  plain=plain.toUpperCase();
  System.out.print("Enter the key= ");
  String key = scan.nextLine();
  key=key.toUpperCase();
  char [] alp = {'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
  String cipherText="";
  int cipher=0;
  
  for(int i=0;i<plain.length();i++)
  {
   cipher = 0;
   for(int j=0;j<26;j++)
   {
    if(plain.charAt(i) == alp[j])
    {
     cipher += j;
    }
    if(key.charAt(i%key.length()) == alp[j])
    {
     cipher += j;
    }
   }
   cipherText += alp[cipher%26];
  }
  
  System.out.println(plain+" + "+key+" = "+cipherText);
 } 
}


These are some basic coding styles, which is hard coding.

Hey! There may be more than one solution for one problem.

Comments

Popular posts from this blog

Some Basic Questions and answers on Operating System Concepts

1.        What are the three main purposes of an operating system? To provide an environment for a computer user to execute programs on computer hardware in a convenient and efficient manner. To allocate the separate resources of the computer as needed to solve the problem given. The allocation process should be as fair and efficient as possible. As a control program it serves two major functions: (1)    supervision of the execution of user programs to prevent errors and improper use of the computer, and (2)    Management of the operation and control of I/O devices. 2.       Keeping in mind the various definitions of operating system, consider whether the operating system should include applications such as web browsers and mail programs. Argue both that it should and that it should not, and support your answers. Point: Applications such as web browsers and email tools are performing an...

Play Fair Cipher (Version 2-with some corrections)

In my last post, I attached a file ( PlayFairCipher.java ) as my Play Fair Cipher Crypto System. But, I found out that it has an error when converting single row or column-wise words (E.g. WORD, PICO). Hence, I re-edited the file and my second version of it. Now it was working as expected. File : PlayFairCipherv2.java Comments are welcome.

Rotating a Line w.r.t Origin and an Endpoint

Assignment 10 Rotating a given point in a anticlockwise direction about the origin in 2D. (You can specify a point by the left mouse button, and click the right mouse button to rotate it). Write a program to rotate any  line  through an angle (say 30 o ) with respect to  the origin [ Answer ]  one of its end points [ Answer ]