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

Scan Conversion(Circle) - Midpoint Algorithm

Assignment 05. Use the mid-point circle technique to derive the necessary equations to scan convert the following circular sector (i.e., points from  27 0 o  to 315 o ) .  Implement your method and u se the circle's symmetric property to draw complete circles.   The file is available here ( ScanConvertCirclemidpoint.cpp ) Play with it. You will understand..

Raising cryptography’s standards

Calculating encryption schemes’ theoretical security guarantees eases comparison, improvement. Most modern cryptographic schemes rely on computational complexity for their security. In principle, they can be cracked, but that would take a prohibitively long time, even with enormous computational resources. There is, however, another notion of security — information-theoretic security — which means that even an adversary with unbounded computational power could extract no useful information from an encrypted message. Cryptographic schemes that promise information-theoretical security have been devised, but they’re far too complicated to be practical. In a series of papers presented at the Allerton Conference on Communication, Control, and Computing, researchers at MIT and Maynooth University in Ireland have shown that existing, practical cryptographic schemes come with their own information-theoretic guarantees: Some of the data they encode can’t be extracted, even by a ...

TrashCoders

As I'm forming a Club "TrashCoders" after our Summer Holidays (May 2nd week), and going to share the knowledge I have, I created a new blog to upload all of the works we do in the Club. Hope you guys have some ideas and/or tips. Trash Coders  Happy Holidays..